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)
上面两步对应的截图