记一次踩坑:使用Navicat连接Mysql8.0.11

  MySQL8.0正式版8.0.11已发布,官方表示MySQL8要比MySQL5.7块两倍,同事还带来了大量的改进和更快的性能!

  从MySQL5.7升级到MySQL8.0仅支持通过使用in-place方式进行升级,并且不支持从MySQL8.0降级到MySQL5.7(或从某个MySQL版本降级到任意一个更早的MySQL8.0的版本)。唯一受支持的替代方案是在升级之前对数据进行备份。

  但是在使用Navicat连接MySQL8.0的时候经常会遇到一个问题:

client does not support authentication protocol requested by server; consider upgrading MySQL client
  这是因为root账户为默认的密码加密方式是:caching_sha2_password;而现在很多客户端工具还不支持这种加密认证方式,连接测试的时候就会报错这里的错误信息就是不支持身份认证方式。

  既然客户端工具还不支持这种加密认证方式,那我们可以通过修改加密方式来达到连接数据库的效果。

  因为一般MySQL在安装的时候(windows)都会让用户设置root账户的密码。那么我们要做的第一步就是将root账户的密码设置为空,让我们可以直接一下命令登录。

mysql -u root -p

第一步:清空root用户的密码

  1、停止mysql服务,window下可以直接在服务中停止,linux系统中需要使用如下命令(具体按用户自己安装的mysql目录为准):

/etc/init.d/mysqld stop

  2、跳过密码验证(mysqld_safe在mysql安装目录的bin目录下):

mysqld_safe –skip-grant-tables

  3、另起一个控制台,将MySQL的root用户密码置为空:

mysql

use mysql;

update user set authentication_string=” where user=’root’;

  4、退出后,重启MySQL数据库(将mysqld_safe –skip-grant-tables命令窗口关闭):

第二步:修改MySQL8.0密码加密方式

  1、使用控制台登录MySQL(因为之前没设置密码,所以密码为空,不用输入密码,直接回车即可):

bin>mysql -u root -p

Enter password:

  2、查询用户密码:

mysql> select host,user,authentication_string from mysql.user;

host: 允许用户登录的ip‘位置’%表示可以远程;

user:当前数据库的用户名;

authentication_string: 用户密码(后面有提到此字段);

  3、更改mysql加密方式:

mysql>ALTER USER ‘root’@’%’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;

mysql>ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘pwd12345’;

mysql>FLUSH PRIVILEGES;

你可能感兴趣的:(MySQL)