修改MySQL认证规则后PHP仍报caching_sha2_password连接错误如何解决?
MySQL caching_sha2_password 连接报错排查步骤
- 确认MySQL配置生效
- 修改my.ini后必须重启MySQL服务,配置才会加载。重启后登录MySQL执行命令:
SHOW VARIABLES LIKE 'default_authentication_plugin';,确认返回值为mysql_native_password。 - 执行
SHOW VARIABLES LIKE 'config_file';,核对返回的配置文件路径是否和你修改的my.ini路径一致,避免修改了错误的配置文件。同时检查配置项是否写在[mysqld]分组下,没有拼写错误。
- 修改my.ini后必须重启MySQL服务,配置才会加载。重启后登录MySQL执行命令:
- 确认用户认证规则配置正确
- 执行命令
SELECT user, host, plugin FROM mysql.user WHERE user = 'mysqlUsername';,核对相应用户的plugin字段是否为mysql_native_password。 - 注意host匹配规则:如果PHP连接数据库用的是
127.0.0.1而非localhost,或者是远程连接,你修改的'mysqlUsername'@'localhost'规则不会生效,需要对应修改对应host(比如'mysqlUsername'@'127.0.0.1'或者'mysqlUsername'@'%')的用户认证规则。 - 修正你之前执行的ALTER USER语句语法错误:原语句把分号写在了密码的单引号内,会把分号识别为密码的一部分,正确语句如下,执行完成后需要运行
FLUSH PRIVILEGES;刷新权限:
ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword'; - 执行命令
- 检查PHP环境配置
- 查看phpinfo中的mysqlnd版本,低于5.0.12的旧版本驱动不支持新的认证逻辑,建议升级PHP到7.1及以上版本,或更新mysqlnd驱动。
- 重启PHP服务(php-fpm或Apache的mod_php),清理可能存在的连接缓存,再尝试连接数据库。
内容的提问来源于stack exchange,提问作者rb33l1
相关产品推荐
相关产品推荐

