麒麟V10服务器PHP连接MySQL报错PHP Warning: mysqli_connect(): Unexpected server respose while doing caching_sha2 auth: 99
这个警告表示在进行缓存的 caching_sha2 认证过程中,服务器返回了一个意外的响应码 99。这是由于 MySQL 服务器的配置或版本与使用的客户端库不兼容导致的。
2.解决办法
a.检查MySQL客户端版本:
确保你使用的MySQL客户端版本与服务器版本兼容。如果服务器使用较新的版本,并且你使用的客户端版本较旧,可能会导致此错误。尽量升级你的MySQL客户端到与服务器版本兼容的最新版本。
# mysql -u root -p (输入数据库root用户密码进入mysql命令行)
# 输入以下命令来检查客户端和服务器版本: select version(); # 显示当前连接的 MySQL 服务器版本 show variables like 'version'; # 显示 客户端版本
比较客户端和服务器版本号,查看它们是否兼容。通常情况下,如果客户端和服务器版本之间的差异不大,它们应该是兼容的。但是,确保它们属于相同的主要版本(例如,5.6.x 或 8.0.x),因为不同的主要版本之间可能存在不兼容性。
b.检查MySQL用户的身份验证方法:
在MySQL服务器上,可以使用多种身份验证方法。较新的MySQL版本通常使用"cache_sha2"作为默认的身份验证方法。然而,较旧的客户端可能不支持该方法。你可以尝试将MySQL用户的身份验证方法更改为较旧的方法,例如"mysql_native_password"。
在 MySQL 命令行提示符下,执行以下查询以查看用户的身份验证方法:
SELECT user, authentication_string, plugin FROM mysql.user WHERE user = 'your_username';
执行以下命令更改用户的身份验证方法:
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
注意将"username"和"password"替换为你实际使用的用户名和密码。
c.更新MySQL客户端配置文件:
如果你使用的是较新版本的MySQL客户端,但仍然遇到此错误,可能需要更新MySQL客户端的配置文件。在配置文件中,你可以指定所使用的默认身份验证方法。在MySQL客户端的配置文件(通常是my.cnf或my.ini)中添加以下行:
default-authentication-plugin=mysql_native_password
保存更改后,重新启动MySQL客户端,并尝试连接到服务器。