MySql 5.7 升级到 5.8 之后的坑[不同]

5.8 的免编译安装方式:

cd /data/server/mysql01;

运行用户与组:

useradd mysql # 自动添加组,注意给相应的目录授权

初始化命令如下,会在控制台输出一个【临时密码】:
./bin/mysql --initialize \
--basedir=/data/server/mysql01 \
--datadir=/data/server/mysql01/data \
--user=mysql

MYSQL_HOME 根目录下生成配置文件【my.cnf】,具体自行参考

启动:
./bin/mysqld_safe \
--defaults-file=/data/server/myslq01/my.cnf \ 【注意这个配置放到后面会报错】
--basedir=/data/server/mysql01/ \
--datadir=/data/server/mysql01/data \
--user=mysql 【不推荐这样启动】

在解压的目录【support-files】下有相应的控制脚本【mysql.server】 修改里面相应的参数就可以直接使用并控制MYSQL

登陆: mysql -uroot -S/tmp/mysql01.sock -p[临时密码]
更新密码: set password="ysp-1989";
刷新权限并退出重新登陆: exit; flush privileges;

【重点】授权语法与之前版本相差很大,即:不在自动创建相应的用户:

  1. 先创建用户: create user 'slaveuser'@'192.168.56.%' identified by 'ysp-1989';
  2. 再进行授权:  grant all privileges on *.* to 'slaveuser'@'192.168.56.%';

【重点】

按以上步骤操作后,远程链接还是有错:

5.8远程链接出错信息

执行查询命令: select host, user, authentication_string, plugin from user;

其密码加密方式变了,如图:

5.8版本后的密码加密方式

5.7之前的是: mysql_native_password ,解决方案有二种:

  1. 修改加密方式
    ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
    FLUSH PRIVILEGES; 
  2. 升级 native 驱动