在PHP 5.6版本中连接MySQL 8高版本可能会出现以下错误提示:
Warning: mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password] in
这是因为MySQL 8引入了新的加密插件caching_sha2_password
,而PHP 5.6默认只支持旧的加密插件,并不兼容caching_sha2_password
。
要解决这个问题,有两种方法可供选择:
php-">方法一:升级PHP版本
将PHP版本升级到支持新加密插件的版本,比如PHP 7.1及以上版本。这样就可以直接使用caching_sha2_password
插件连接MySQL 8。
方法二:修改MySQL用户密码插件
通过修改MySQL用户的密码插件,将其设置为兼容旧版本的插件(比如mysql_native_password
)。
下面是具体的步骤:
在MySQL命令行或MySQL客户端中,使用管理员账户登录到MySQL服务器。
执行以下命令切换到
mysql
数据库:use mysql;
执行以下命令修改用户密码插件:
ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
将
your_username
替换为你的MySQL用户名,your_password
替换为对应的密码。如果你使用了远程连接,需要执行以下命令修改远程连接的用户密码插件:
ALTER USER 'your_username'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
将
your_username
替换为你的MySQL用户名,your_password
替换为对应的密码。刷新权限使修改生效:
FLUSH PRIVILEGES;
完成上述步骤后,尝试重新连接MySQL 8服务器,此时应该能够成功连接而不再报错。
请注意,方法二只适用于开发或测试环境,不建议在生产环境中使用。在生产环境中,推荐使用方法一升级PHP版本以获得更好的兼容性和安全性。