一. 问题背景
在Linux的Docker里面创建mysql容器,用Navicat连接时,报错2059:Authentication ...can not load
二. 报错原因
Navicat、SQLyog都不支持mysql8的新加密方式caching_sha2_password,因此会连接报错
三. 解决方案
在Linux上面启动Docker的mysql容器,然后输入docker exec -it mysql容器ID或者名字 bash
,然后用mysql -u root -p
登录mysql。
修改加密规则:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码' PASSWORD EXPIRE NEVER;
更新用户密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
刷新权限:
FLUSH PRIVILEGES;
使用Navicat连接成功