麒麟V10服务器PHP连接MySQL报错PHP Warning: mysqli_connect(): Unexpected server respose while doing caching_sha2 auth: 99

 
1.问题描述

  这个警告表示在进行缓存的 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客户端,并尝试连接到服务器。

posted @ 2023-07-08 14:40  DuanYongchun  阅读(107)  评论(0编辑  收藏  举报