解决Navicat连接MySQL出现1251-Client does not support authentication protocol requested by server;

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38455201/article/details/83024357

MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

一:MySQL的安装

在windows下面,点击mysql下载链接,去下载页面下载,下载页有安装包和解压包两种,随便下载哪种都可以。

下载完之后,安装包选择安装,安装过程当中会设置初始的一些账户名称和密码,要记住。解压包就解压在你想解压的文件夹下面就可以了。现在文件夹下面一般是没有data目录(一个空的目录结构)和my.ini文件的,所以这就需要自己新建。

其中,my.ini文件内容比较简单,如下:

[mysqld]
basedir=C:\Program Files\MySQL\MySQL Server 8.0
datadir=C:\Program Files\MySQL\MySQL Server 8.0\data 
port = 3306
character-set-server=utf8
#忘记密码时使用
#skip-grant-tables
#设置协议认证方式(重点啊)
default_authentication_plugin=mysql_native_password
[mysql]
default-character-set=utf8

二:设置MySQL的环境变量

这个都比较简单,在win10界面左下角查询框当中去查询"高级系统设置",然后弹出下面这个界面

设置完成之后,编辑Path系统变量:在系统变量里,找到Path变量,点击“编辑”按钮,我们将;%MYSQL_HOME%\bin添加到path变量(一般放在最后面),注意如果前面有还有其他的配置,一定要在前面加上英文的分号(半角)。MYSQL_HOME不是必须的,为了以后mysql重新安装到其他目录下的更改方便,毕竟Path系统变量比较多,修改容易出错,因此也可直接在Path变量中添加:C:\Program Files\MySQL\MySQL Server 8.0\bin

三:出现的一个错误

在安装完MySQL的时候,我们现在一般都使用Navicat来连接数据库,可惜出现下面的错误:1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client。

出现上述问题的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password 把mysql用户登录密码加密规则还原成mysql_native_password

我安装的时候是使用的安装包去安装的,所以新建了几个用户,cmd命令,连接mysql,查询系统当中所有的用户。

1.查看MYSQL数据库中所有用户

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

2.修改加密规则,因为最新版的加密规则好像不一样,安装的过程当中是有提示的。

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

3.修改用户的认证规则

mysql> alter user '用户名'@'%' identified with mysql_native_password by '密码';

例如我的用户名是admin,密码是123456,那么,我修改的规则如下

mysql> alter user 'admin'@'%' identified with mysql_native_password by '123456';

其中还有'用户名'@'%'和'用户名'@'localhost'的区别,一个是任意连接,一个是本地连接。

4.刷新权限

mysql> flush privileges;

5.停止并重启服务

mysql> net stop mysql
mysql> net start mysql

这里需要注意的是:mysql这个是你的mysql服务的名称,具体名称如何查询呢?假如你的服务名称为MySQL80,那么mysql就得改成MySQL80。

现在再去用Navicat去连接数据库,就不会出现上述的问题了。

猜你喜欢

转载自blog.csdn.net/qq_38455201/article/details/83024357