CentOS 下 MySQL 8.0 安装部署!

Stella981
• 阅读 761

公众号关注“杰哥的IT之旅”,

选择“星标”,重磅干货,第一时间送达!


CentOS 下 MySQL 8.0 安装部署!

MySQL 8正式版8.0.11已发布,官方表示MySQL8要比MySQL 5.7快2倍,还带来了大量的改进和更快的性能!

Mysql8.0安装 (YUM方式)

  1. 首先删除系统默认或之前可能安装的其他版本的 mysql

    [root@DB-node01 ~]# for i in $(rpm -qa|grep mysql);do rpm -e $i --nodeps;done[root@DB-node01 ~]# rm -rf /var/lib/mysql && rm -rf /etc/my.cnf

  2. 安装Mysql8.0 的yum资源库

    mysql80-community-release-el7-1.noarch.rpm     [root@DB-node01 ~]# yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

  3. 安装Mysql8.0

    [root@DB-node01 ~]# yum install mysql-community-server   #启动MySQL服务器和MySQL的自动启动[root@DB-node01 ~]# systemctl start mysqld[root@DB-node01 ~]# systemctl enable mysqld

  4. 使用默认密码初次登录后, 必须要重置密码

    查看默认密码, 如下默认密码为"e53xDalx.*dE"[root@DB-node01 ~]# grep 'temporary password' /var/log/mysqld.log2019-03-06T01:53:19.897262Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: e53xDalx.*dE  [root@DB-node01 ~]# mysql -pe53xDalx.*dE............mysql> select version();ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

报错提示必须要重置初始密码, 下面开始重置mysql登录密码(注意要切换到mysql数据库,使用use mysql

mysql> use mysql;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.   mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个其实与validate_password_policy的值有关, mysql8.0更改了validate_password_policy相关的配置名称, 这跟Mysql5.7有点不一样了.

mysql> set global validate_password.policy=0;Query OK, 0 rows affected (0.00 sec)   mysql> set global validate_password.length=1;Query OK, 0 rows affected (0.00 sec)

接着再修改密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.05 sec)   mysql> flush privileges;Query OK, 0 rows affected (0.03 sec)

退出, 重新使用新密码登录mysql

[root@DB-node01 ~]# mysql -p123456...........mysql> select version();+-----------+| version() |+-----------+| 8.0.15    |+-----------+1 row in set (0.00 sec)

查看服务端口

mysql> show global variables like 'port';+---------------+-------+| Variable_name | Value |+---------------+-------+| port          | 3306  |+---------------+-------+1 row in set (0.01 sec)

查看mysql连接的授权信息

mysql> select host,user,password from mysql.user;ERROR 1054 (42S22): Unknown column 'password' in 'field list'

上面这是mysql5.6及以下版本的查看命令, mysql5.7之后的数据库里mysql.user表里已经没有password这个字段了,password字段改成了authentication_string。

mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             | $A$005${7J0=4Dc7Jym8eI/FU4jimKWFvkD9XmoAkF1ca5.Un0bc6zgmPtU.0          |+-----------+------------------+------------------------------------------------------------------------+4 rows in set (0.00 sec)

mysql8.0修改用户密码命令

mysql> use mysql;mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';mysql> flush privileges;

Mysql8.0安装 (二进制方式)

  1. 首先删除系统默认或之前可能安装的其他版本的 mysql

    [root@mysql8-node ~]# for i in $(rpm -qa|grep mysql);do rpm -e $i --nodeps;done[root@mysql8-node ~]# rm -rf /var/lib/mysql && rm -rf /etc/my.cnf

  2. 安装需要的软件包

    [root@mysql8-node ~]# yum -y install libaio[root@mysql8-node ~]# yum -y install net-tools

  3. 下载并安装Mysql8.0.12

    [root@mysql8-node ~]# groupadd mysql[root@mysql8-node ~]# useradd -g mysql mysql [root@mysql8-node ~]# cd /usr/local/src/[root@mysql-node src]# ll-rw-r--r-- 1 root root 620389228 Aug 22  2018 mysql8.0.12_bin_centos7.tar.gz[root@mysql-node src]# tar -zvxf mysql8.0.12_bin_centos7.tar.gz[root@mysql-node src]# mv mysql /usr/local/[root@mysql-node src]# chown -R mysql.mysql /usr/local/mysql [root@mysql-node src]# vim /home/mysql/.bash_profileexport PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH[root@mysql-node src]# source /home/mysql/.bash_profile[root@mysql-node src]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile[root@mysql-node src]# source /etc/profile

  4. 创建数据目录

    [root@mysql-node src]# mkdir -p /data/mysql/{data,log,binlog,conf,tmp}         [root@mysql-node src]# chown -R mysql.mysql /data/mysql

  5. 配置 mysql

    [root@mysql-node src]# su - mysql[mysql@mysql-node ~]$ vim /data/mysql/conf/my.cnf[mysqld]lower_case_table_names          = 1user                            = mysqlserver_id                       = 1port                            = 3306 default-time-zone = '+08:00'enforce_gtid_consistency        = ONgtid_mode                       = ONbinlog_checksum                 = nonedefault_authentication_plugin   = mysql_native_passworddatadir                         = /data/mysql/datapid-file                        = /data/mysql/tmp/mysqld.pidsocket                          = /data/mysql/tmp/mysqld.socktmpdir                          = /data/mysql/tmp/skip-name-resolve               = ONopen_files_limit                = 65535table_open_cache                = 2000 #################innodb########################innodb_data_home_dir            = /data/mysql/datainnodb_data_file_path           = ibdata1:512M;ibdata2:512M:autoextendinnodb_buffer_pool_size = 12000Minnodb_flush_log_at_trx_commit = 1innodb_io_capacity = 600innodb_lock_wait_timeout = 120innodb_log_buffer_size = 8Minnodb_log_file_size = 200Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 85innodb_read_io_threads = 8innodb_write_io_threads = 8innodb_thread_concurrency = 32innodb_file_per_tableinnodb_rollback_on_timeout innodb_undo_directory           = /data/mysql/datainnodb_log_group_home_dir       = /data/mysql/data ###################session###########################join_buffer_size = 8Mkey_buffer_size = 256Mbulk_insert_buffer_size = 8Mmax_heap_table_size = 96Mtmp_table_size = 96Mread_buffer_size = 8Msort_buffer_size = 2Mmax_allowed_packet = 64Mread_rnd_buffer_size = 32M ############log set###################log-error                       = /data/mysql/log/mysqld.errlog-bin                         = /data/mysql/binlog/binloglog_bin_index                   = /data/mysql/binlog/binlog.indexmax_binlog_size                 = 500Mslow_query_log_file             = /data/mysql/log/slow.logslow_query_log                  = 1long_query_time                 = 10log_queries_not_using_indexes   = ONlog_throttle_queries_not_using_indexes  = 10log_slow_admin_statements       = ONlog_output                      = FILE,TABLEmaster_info_file                = /data/mysql/binlog/master.info

  6. 初始化 (稍等一会儿, 可以到/data/mysql/log/mysqld.err日子里查看初始化过程, 看看有没有error信息)

    [mysql@mysql-node ~]$ mysqld --defaults-file=/data/mysql/conf/my.cnf  --initialize-insecure  --user=mysql 

  7. 启动mysqld

    [mysql@mysql-node ~]$ mysqld_safe --defaults-file=/data/mysql/conf/my.cnf & [mysql@mysql-node ~]$ lsof -i:3306COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEmysqld  24743 mysql   23u  IPv6 23132988      0t0  TCP *:mysql (LISTEN)

  8. 登录mysql, 重置密码

    本地首次使用sock文件登录mysql是不需要密码的[mysql@mysql-node ~]# mysql -S /data/mysql/tmp/mysqld.sock.............mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.07 sec) mysql> flush privileges;Query OK, 0 rows affected (0.03 sec) mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |+-----------+------------------+------------------------------------------------------------------------+4 rows in set (0.00 sec)

退出, 此时密码重置后, 就不能使用sock文件无密码登录了

[root@mysql-node ~]# mysql -S /data/mysql/tmp/mysqld.sockERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) [root@mysql-node ~]# mysql -p123456mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

做sock文件的软链接

[root@mysql-node ~]# ln -s /data/mysql/tmp/mysqld.sock /tmp/mysql.sock

登录

[root@mysql-node ~]# mysql -p123456或者[root@mysql-node ~]# mysql -uroot -S /data/mysql/tmp/mysqld.sock -p123456.............mysql> select version();+-----------+| version() |+-----------+| 8.0.12    |+-----------+1 row in set (0.00 sec) #授予用户权限. 必须先要创建用户, 才能授权!!(创建用户时要带@并指定地址, 则grant授权时的地址就是这个@后面指定的!, 否则grant授权就会报错!)mysql> create user 'kevin'@'%' identified by '123456';Query OK, 0 rows affected (0.11 sec) mysql> grant all privileges on *.* to 'kevin'@'%' with grant option; Query OK, 0 rows affected (0.21 sec) mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+| %         | kevin            | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              || localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |+-----------+------------------+------------------------------------------------------------------------+5 rows in set (0.00 sec) mysql> update mysql.user set host='172.16.60.%' where user="kevin";Query OK, 1 row affected (0.16 sec)Rows matched: 1  Changed: 1  Warnings: 0 mysql> flush privileges;Query OK, 0 rows affected (0.05 sec) mysql> select host,user,authentication_string from mysql.user;+-------------+------------------+------------------------------------------------------------------------+| host        | user             | authentication_string                                                  |+-------------+------------------+------------------------------------------------------------------------+| 172.16.60.% | kevin            | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              || localhost   | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | root             | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |+-------------+------------------+------------------------------------------------------------------------+5 rows in set (0.00 sec) mysql>  create user 'bobo'@'172.16.60.%' identified by '123456';      Query OK, 0 rows affected (0.09 sec) mysql> grant all privileges on *.* to 'bobo'@'172.16.60.%';     Query OK, 0 rows affected (0.17 sec) mysql> flush privileges;Query OK, 0 rows affected (0.04 sec) mysql> select host,user,authentication_string from mysql.user;+-------------+------------------+------------------------------------------------------------------------+| host        | user             | authentication_string                                                  |+-------------+------------------+------------------------------------------------------------------------+| 172.16.60.% | bobo             | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              || 172.16.60.% | kevin            | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              || localhost   | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost   | root             | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |+-------------+------------------+------------------------------------------------------------------------+6 rows in set (0.00 sec) mysql> show grants for kevin@'172.16.60.%';+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Grants for kevin@172.16.60.%                                                                                                                                                                                                                                                                                                                                                                                |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `kevin`@`172.16.60.%` WITH GRANT OPTION |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)

MySQL单机多实例安装配置

通过上面二进制部署可知, 已经起来一个3306端口的MySQL实例, 现在需要再起来两个实例, 分别为3307, 3308. 操作如下:

创建实例的数据目录

[root@mysql-node ~]# mkdir -p /data/mysql3307/{data,log,binlog,conf,tmp}      [root@mysql-node ~]# mkdir -p /data/mysql3308/{data,log,binlog,conf,tmp}     [root@mysql-node ~]# chown -R mysql.mysql /data/mysql3307[root@mysql-node ~]# chown -R mysql.mysql /data/mysql3308

配置mysql

[root@mysql-node ~]# cp -r /data/mysql/conf/my.cnf /data/mysql3307/conf/[root@mysql-node ~]# cp -r /data/mysql/conf/my.cnf /data/mysql3308/conf/[root@mysql-node ~]# sed -i 's#/data/mysql/#/data/mysql3307/#g' /data/mysql3307/conf/my.cnf[root@mysql-node ~]# sed -i 's#/data/mysql/#/data/mysql3308/#g' /data/mysql3308/conf/my.cnf[root@mysql-node ~]# sed -i 's/3306/3307/g' /data/mysql3307/conf/my.cnf[root@mysql-node ~]# sed -i 's/3306/3308/g' /data/mysql3308/conf/my.cnf  [root@mysql-node ~]# chown -R mysql.mysql /data/mysql*

进行初始化两个实例

[root@mysql-node ~]# mysqld --defaults-file=/data/mysql3307/conf/my.cnf  --initialize-insecure  --user=mysql [root@mysql-node ~]# mysqld --defaults-file=/data/mysql3308/conf/my.cnf  --initialize-insecure  --user=mysql

接着启动mysqld

[root@mysql-node ~]# mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnf &[root@mysql-node ~]# mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf &

查看启动是否成功

[root@mysql-node ~]# ps -ef|grep mysqlmysql    23996     1  0 14:37 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my.cnfmysql    24743 23996  0 14:38 ?        00:00:17 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/data/mysql/log/mysqld.err --open-files-limit=65535 --pid-file=/data/mysql/tmp/mysqld.pid --socket=/data/mysql/tmp/mysqld.sock --port=3306root     30473 23727  0 15:33 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnfmysql    31191 30473 17 15:33 pts/0    00:00:02 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql3307/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql3307/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql3307/log/mysqld.err --open-files-limit=65535 --pid-file=/data/mysql3307/tmp/mysqld.pid --socket=/data/mysql3307/tmp/mysqld.sock --port=3307root     31254 23727  0 15:33 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnfmysql    31977 31254 39 15:33 pts/0    00:00:02 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql3308/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql3308/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql3308/log/mysqld.err --open-files-limit=65535 --pid-file=/data/mysql3308/tmp/mysqld.pid --socket=/data/mysql3308/tmp/mysqld.sock --port=3308root     32044 23727  0 15:34 pts/0    00:00:00 grep --color=auto mysql [root@mysql-node ~]# lsof -i:3307COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEmysqld  31191 mysql   22u  IPv6 23144844      0t0  TCP *:opsession-prxy (LISTEN)[root@mysql-node ~]# lsof -i:3308COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEmysqld  31977 mysql   22u  IPv6 23145727      0t0  TCP *:tns-server (LISTEN)[root@mysql-node ~]# lsof -i:3306COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEmysqld  24743 mysql   23u  IPv6 23132988      0t0  TCP *:mysql (LISTEN)

登录3307端口实例, 并设置密码

[root@mysql-node ~]# mysql -S /data/mysql3307/tmp/mysqld.sock............mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.11 sec) mysql> flush privileges;Query OK, 0 rows affected (0.11 sec)

退出, 使用新密码登录

[root@mysql-node ~]# mysql -uroot -S /data/mysql3307/tmp/mysqld.sock -p123456   .............mysql>

同理, 登录3308端口实例, 并设置密码

[root@mysql-node ~]# mysql -S /data/mysql3308/tmp/mysqld.sock...........mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.13 sec) mysql> flush privileges;Query OK, 0 rows affected (0.03 sec)

退出, 使用新密码登录

[root@mysql-node ~]# mysql -uroot -S /data/mysql3308/tmp/mysqld.sock -p123456....................mysql>

3306, 3307, 3308三个端口实例的启动命令分别为:

mysqld_safe --defaults-file=/data/mysql/conf/my.cnf &mysqld_safe --defaults-file=/data/mysql3307/conf/my.cnf &mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf &

登录命令分别为:

mysql -uroot -S /data/mysql/tmp/mysqld.sock -p123456mysql -uroot -S /data/mysql3307/tmp/mysqld.sock -p123456mysql -uroot -S /data/mysql3308/tmp/mysqld.sock -p123456

不过为了解决大家平时重复安装的问题,特意将多实例安装方法编辑成脚本了,有需要的读者可以在本公众号后台直接回复 MySQL8 获取多实例安装脚本。

Mysql8.0使用过程中踩过的一些坑

  • 1)创建用户和授权 在mysql8.0创建用户和授权和之前不太一样了,其实严格上来讲,也不能说是不一样, 只能说是更严格, mysql8.0需要先创建用户(创建用户时要带@并指定地址, 则grant授权时的地址就是这个@后面指定的!, 否则grant授权就会报错!)和设置密码,然后才能授权。

    mysql> create user 'kevin'@'%' identified by '123456';Query OK, 0 rows affected (0.04 sec) mysql> grant all privileges on . to 'kevin'@'%' with grant option;   Query OK, 0 rows affected (0.04 sec) mysql> create user 'bobo'@'%' identified by '123456';    Query OK, 0 rows affected (0.06 sec) mysql> grant all privileges on . to 'bobo'@'%' with grant option;Query OK, 0 rows affected (0.03 sec) mysql> flush privileges;Query OK, 0 rows affected (0.04 sec) mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+| %         | bobo             | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1  || %         | kevin            | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85       || localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2       |+-----------+------------------+------------------------------------------------------------------------+

如果还是用Mysql5.7及之前版本的直接授权的方法, 会有报错:

mysql> grant all privileges on *.* to 'shibo'@'%' identified by '123456';ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123456'' at line 1
  • 2)Mysql8.0默认是不能使用root账号进行远程登录的! root账号只能本地登录!

    mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+| %         | bobo             | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1 || %         | kevin            | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85 || localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | root             | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2 |+-----------+------------------+------------------------------------------------------------------------+6 rows in set (0.00 sec)

如果想要远程登录, 则需要进行update更新下root账号的权限

mysql> update mysql.user set host='%' where user="root";Query OK, 1 row affected (0.10 sec)Rows matched: 1  Changed: 1  Warnings: 0 mysql> flush privileges;Query OK, 0 rows affected (0.14 sec) mysql> select host,user,authentication_string from mysql.user;+-----------+------------------+------------------------------------------------------------------------+| host      | user             | authentication_string                                                  |+-----------+------------------+------------------------------------------------------------------------+| %         | bobo             | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1  || %         | kevin            | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85       || %         | root             | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2       || localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED || localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |+-----------+------------------+------------------------------------------------------------------------+6 rows in set (0.00 sec)

这样就能在远程使用root账号登录该mysql8.0的数据库了

  1. 修改root账号权限, 允许root账号远程登录后, 用navicat进行mysql的远程连接时,出现了弹窗报错: CentOS 下 MySQL 8.0 安装部署! 出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password, 而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种:
  1. 一种是升级navicat驱动;
  1. 一种是把mysql用户登录密码加密规则还原成mysql_native_password; 这里选择第二种方法来解决:

    #修改加密规则mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;       Query OK, 0 rows affected (0.16 sec) #更新一下用户的密码mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';Query OK, 0 rows affected (0.08 sec) #刷新权限mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.03 sec)

这样问题就解决了。

  • 1、使用sqlyog链接时会出现2058的异常,此时我们需要修改mysql,命令行登录mysql(与修改密码中登录相同,使用修改后的密码),然后执行下面的命令:mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 其中password为自己修改的密码。然后SQLyog中重新连接,则可连接成功,OK。

  • 2、如果报错:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'则使用下面命令:mysql > ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

  1. sqlyog链接时出现2058异常
  1. 修改默认编码方式 mysql8.0默认编码方式为utf8mb4,因此使用时不需要修改,可使用如下命令查看:

    mysql > SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

如果需要修改其他编码方式,比如需要修改为utf8mb4,可以使用如下方式:

修改mysql配置文件my.cnf, 找到后请在以下三部分里添加如下内容:[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_connect='SET NAMES utf8mb4'

然后重启mysqld服务即可, 其中:

character_set_client  (客户端来源数据使用的字符集)character_set_connection     (连接层字符集)character_set_database   (当前选中数据库的默认字符集)character_set_results (查询结果字符集)character_set_server (默认的内部操作字符集)

数据库连接参数中:

characterEncoding=utf8 会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。而autoReconnect=true 是必须加上的。
  • 6)部分参数配置查询命令

    #查询mysql最大连接数设置mysql> show global variables like 'max_conn%';mysql> SELECT @@MAX_CONNECTIONS AS 'Max Connections'; # 查看最大链接数mysql> show global status like 'Max_used_connections'; # 查看慢查询日志是否开启以及日志位置mysql> show variables like 'slow_query%'; # 查看慢查询日志超时记录时间mysql> show variables like 'long_query_time'; # 查看链接创建以及现在正在链接数mysql> show status like 'Threads%'; # 查看数据库当前链接mysql> show processlist;# 查看数据库配置mysql> show variables like '%quer%';

 

作者:散尽浮华

出处:https://www.cnblogs.com/kevingrace/p/10482469.html


如果您觉得这篇文章对您有点用的话,麻烦您为本文来个四连:转发分享、点赞、点在看、留言,因为这将是我写作与分享更多优质文章的最强动力!


本公众号全部博文已整理成一个目录,请在公众号后台回复「m」获取!

推荐阅读:

                   1、 
                  [MySQL | MySQL 数据库系统(一)](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzAwMjg1NjY3Nw%3D%3D%26mid%3D2247487019%26idx%3D1%26sn%3Df0117cd6772af05f25d12f1716492ff5%26scene%3D21%23wechat_redirect) 
                    

2、 MySQL | MySQL 数据库系统(二)- SQL语句的基本操作

3、 MySQL | MySQL 数据库系统(三)- 数据库的用户授权

4、 MySQL | MySQL 数据库系统(四)- 数据库的备份与恢复

5、 13000字!最常问的MySQL面试题集合

6、 IT运维面试问题总结-数据库、监控、网络管理(NoSQL、MongoDB、MySQL、Prometheus、Zabbix)

7、 【建议收藏】写给程序员的 MySQL 面试高频 100 问!

8、 MySQL 常用优化指南,及大表优化思路都在这了!

9、 面试问烂的 MySQL 四种隔离级别,看完吊打面试官!

10、 超全面的 MySQL 优化面试解析

             关注微信公众号「 
            **杰哥的IT之旅**」,后台回复「 
            **1024**」查看更多内容,回复「 
            **加群**」 
            **备注:地区-职业方向-昵称** 即可加入读者交流群。 
           


          


         


        


       

      
      
      

     
     
     

    
    
    

   
   
   

===========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

CentOS 下 MySQL 8.0 安装部署!

                   点个[在看],是对杰哥最大的支持! 
                   
                 
      
                
                
                
     
               
               
               
    
              
              
              
   
             
             
             
  
            
            
            

          
          
          

   
   
   

  
  
  

本文分享自微信公众号 - 杰哥的IT之旅(Jake_Internet)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
可莉 可莉
3年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这