MySQL 连接出现 Authentication plugin ‘caching_sha2_password‘ cannot be loaded

MySQL 连接出现 Authentication plugin 'caching_sha2_password' cannot be loaded

https://www.cnblogs.com/zhurong/p/9898675.html

很多用户在使用Navicat Premium 12连接MySQL数据库时会出现Authentication plugin 'caching_sha2_password' cannot be loaded的错误。

出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password. 

这里用第二种方式 ,解决方法如下

1. 管理员权限运行命令提示符

 登陆MySQL(记得添加环境变量)

   mysql -u root -p

   password:                                                                         #登入mysql

 

2. 修改账户密码加密规则并更新用户密码

   #先修改 my.ini 配置:

   [mysqld]

   default_authentication_plugin=mysql_native_password

# 修改加密规则为永不过期
#注意:password 改为你的密码,别老老实实照抄,之前本人便以为 password 指代密码不用改变,结果一通指令下去,mysql 登不上了,只好重新初始化数据库
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

#更新一下用户的密码加密方式为之前版本的方式
ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'password'; 

#刷新权限
FLUSH PRIVILEGES;

3. 修改实例程序

import mysql.connector
mydb = mysql.connector.connect(
    host = "localhost",  # 数据库主机地址
    user = "root", # 数据库用户名
    passwd = "root", # 数据库密码
    auth_plugin='mysql_native_password',
    database= "testdb" #可以直连数据库
)

mycursor = mydb.cursor()
mycursor.execute("show databases")
for x in mycursor:
    print(x)

 上面两步对应的截图

猜你喜欢

转载自blog.csdn.net/zhiboqingyun/article/details/113087583
今日推荐