错误原因
这个错误通常出现在 MySQL 8.0+ 版本中,原因是:
MySQL 8.0 默认使用新的认证插件:caching_sha2_password
而你的 客户端工具(如旧版 Navicat、PHP、JDBC、命令行等)不支持这种新认证方式,导致无法连接。
解决方案
修改 root 用户的认证方式
以管理员身份打开命令提示符或 PowerShell,登录 MySQL(需要你记得 root 密码):
mysql -u root -p
执行以下 SQL 命令,将 root@localhost 用户的认证方式改为旧的 mysql_native_password:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
将 '你的密码' 替换为你当前设置的 root 密码。
刷新权限:
FLUSH PRIVILEGES;
退出:
EXIT;
现在你就可以用旧版客户端(如 Navicat、PHP、Python 等)正常连接了。