mysql
mysql 命令
#指定ID记录数:
alter table user AUTO_INCREMENT 此处写你想让id从几开始增长的数字
#mysql开放远程连接:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
#刷新权限表,使配置生效:
flush privileges;
更改表和字段的,字符集。
ALTER TABLE sursen_destruction CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
# 修改数据库字符集
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
ALTER DATABASE sursen_admin DEFAULT CHARACTER SET utf8;
# 把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
# 如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
# 只是修改表的默认字符集:
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
# 如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
# 修改字段的字符集:
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
# 如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
# 查看数据库编码:
SHOW CREATE DATABASE db_name;
# 查看表编码:
SHOW CREATE TABLE tbl_name;
# 查看字段编码:
SHOW FULL COLUMNS FROM tbl_name;
ALTER TABLE nimo_finance_merchant_settlement CONVERT TO CHARACTER SET utf8mb4;
ALTER TABLE `sursen-admin`.`sys_users` AUTO_INCREMENT = 100
# 修改数据所有表与表中字段的编码及字符集 分两步
1.利用语句,生成所有实际执行的语句
SELECT
CONCAT("ALTER TABLE `", TABLE_NAME,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;")
AS target_tables
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="tuser" # 修改为需要更改的数据库名称
AND TABLE_TYPE="BASE TABLE"
# SET \ COLLATE 设置为需要修改为的编码 \ 字符集
# TABLE_SCHEMA="db_name":修改为数据库名称
# 此语句会基于 MySQL 的元数据表,得到一组可直接执行的 SQL 列表,如下:
ALTER TABLE `table1` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `table2` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `table3` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `table4` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `table5` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `table6` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 其中,table1 到 table6 即为数据库中的所有数据表。
2.直接将语句粘贴并执行即可。
- 注意,这里使用 CONVERT TO 而非 DEFAULT,是因为后者不会修改表中字段的编码和字符集
- 此外,对于数据表比较多的数据库,可以先将第一步的执行结果导出到 .sql 文件,再通过该 SQL 文件执行即可
show processlist;show status like '%max_%';show variables like '%max_%';
vi /etc/my.conf
max_connections=5000
innodb_lock_wait_timeout = 500
vi /lib/systemd/system/mysqld.service
LimitNOFILE=65535
LimitNPROC=65535
systemctl daemon-reload
systemctl restart mysqld.service
DROP USER 'delshards'@'%';
CREATE DATABASE delshards;
CREATE USER 'delshards'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES on delshards.* to 'delshards'@'%'IDENTIFIED by '123456';
update user set password = password ('123456') where user = 'root';
delete from user where user='';
FLUSH PRIVILEGES;
TINYTEXT 最大长度是 255 (2^8 – 1) 个字符。
TEXT 最大长度是 65535 (2^16 – 1) 个字符。
MEDIUMTEXT 最大长度是 16777215 (2^24 – 1) 个字符。
LONGTEXT 最大长度是 4294967295 (2^32 – 1) 个字符。
Centos7 mysql数据库安装和配置
1.系统环境
[root@yl-web yl]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
2.mysql安装
yum install mysql
yum install mysql-server
yum install mysql-devel
//安装mysql和mysql-devel都成功,但是安装mysql-server失败,如下:
[root@yl-web yl]# yum install mysql-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.sina.cn
* extras: mirrors.sina.cn
* updates: mirrors.sina.cn
No package mysql-server available.
Error: Nothing to do
//查资料发现是CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了
有两种解决办法:
方法一:安装mariadb
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。安装mariadb,大小59 M。
[root@yl-web yl]# yum install mariadb-server mariadb
mariadb数据库的相关命令是:
systemctl start mariadb #启动MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动
所以先启动数据库
[root@yl-web yl]# systemctl start mariadb
[root@yl-web yl]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.41-MariaDB MariaDB Server
Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]>
##安装mariadb后显示的也是 MariaDB [(none)]> ,可能看起来有点不习惯。下面是第二种方法。
方法二:官网下载安装mysql-server
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server
安装成功后重启mysql服务。
service mysqld restart
初次安装mysql,root账户没有密码。
[root@yl-web yl]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.26 MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)
mysql>
设置密码
mysql> set password for 'root'@'localhost' =password('password');
Query OK, 0 rows affected (0.00 sec)
# 创建一个名为testuser的用户:
CREATE USER 'testuser'@'localhost' IDENTIFIED BY '123456';
# 我们可以使用以下命令来修改用户的密码 newpassword:新密码 username:需要修改密码的用户名
UPDATE mysql.user SET authentication_string = PASSWORD('newpassword') WHERE user = 'username';
# 例如,我们想把testuser用户的密码修改为654321,则可以执行以下命令:
UPDATE mysql.user SET authentication_string = PASSWORD('654321') WHERE user = 'testuser';
mysql>
不需要重启数据库即可生效。在mysql安装过程中如下内容:
Installed:
mysql-community-client.x86_64 0:5.6.26-2.el7
mysql-community-devel.x86_64 0:5.6.26-2.el7
mysql-community-libs.x86_64 0:5.6.26-2.el7
mysql-community-server.x86_64 0:5.6.26-2.el7
Dependency Installed:
mysql-community-common.x86_64 0:5.6.26-2.el7
Replaced:
mariadb.x86_64 1:5.5.41-2.el7_0
mariadb-devel.x86_64 1:5.5.41-2.el7_0
mariadb-libs.x86_64 1:5.5.41-2.el7_0
mariadb-server.x86_64 1:5.5.41-2.el7_0
所以安装完以后mariadb自动就被替换了,将不再生效。
[root@yl-web yl]# rpm -qa |grep mariadb
[root@yl-web yl]#
三、配置mysql
mysql配置文件为/etc/my.cnf 最后加上编码配置
[mysql]
default-character-set =utf8
这里的字符编码必须和/usr/share/mysql/charsets/Index.xml中一致
mysql
## 把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户。
mysql> grant all privileges on *.* to root@'%'identified by 'password';
## 如果是新用户而不是root,则要先新建用户
mysql>create user 'username'@'%' identified by 'password';
## 此时就可以进行远程连接了。
开启MySQL远程访问权限 允许远程连接
mysql> use mysql;
Database changed
mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host | user | password |
+--------------+------+-------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
2 rows in set (0.00 sec)
update user set host = ’%’ where user = ’root’;
mysql> use mysql;
Database changed
mysql> grant all privileges on *.* to root@'%' identified by "password";
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host | user | password |
+--------------+------+-------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
3 rows in set (0.00 sec)
本地登陆远程阿里云mysql的问题
本地MySQL数据库报SSL connection error: SSL is required but the server doesn't support it. 解决办法不启用SSL,在Advance TAB页,Others框中输入参数:useSSL=0
查看mysql配置文件路径
SHOW VARIABLES LIKE 'my%cnf';
+----------------------+----------------------------+
| Variable_name | Value |
+----------------------+----------------------------+
| my_cnf | /etc/my.cnf |
| my_ini | C:\ProgramData\MySQL\My.ini |
+----------------------+----------------------------+
mysql 主从(同步 半同步) 主主 配置
1.主从配置
docker run -p 3307:3306 --name mysql_master -e MYSQL_ROOT_PASSWORD=root -d f5da8fc4b539
docker run -p 3308:3306 --name mysql_slave -e MYSQL_ROOT_PASSWORD=root -d f5da8fc4b539
2.开启root用户远程访问
1.登陆mysql 选择对应的库 给root开放权限
mysql -h127.0.0.1 -P3307 -uroot -p
use mysql;
update user set host='%' where user='root';
flush privileges;
3.修改配置文件
# 1. 必须 指定mysql唯一标识.
server-id=1
# 2. 可选 指定mysql binlog 文件名称.
#log-bin=mysql-bin
# 3. 可选 binlog格式(mixed,statement,row.默认格式是row).
binlog_format=mixed
# 4. 可选 不需要复制的数据库.
#binlog-ignore-db=test
# 5. 可选 需要复制的数据库.
#binlog-do-db=
# 1. 必须 指定mysql唯一标识.
server-id=2
# 2. 可选 指定mysql binlog 文件名称.
#log-bin=mysql-bin
# 3. 可选 binlog格式(mixed,statement,row.默认格式是row).
binlog_format=mixed
# 3.5 可选 中继日志
#relay_log=myql-relay-bin
# 4. 可选 不需要复制的数据库.
#binlog-ignore-db=test
# 5. 可选 需要复制的数据库.
#binlog-do-db=