mysqli_connect:客户端未知的身份验证方法[caching_sha2_password]

问题描述 投票:0回答:1

我已经安装了 PHP 版本 8.3.7,并根据 phpinfo 运行。我尝试连接到 MYSQL 8 数据库并收到消息:

PHP 致命错误:未捕获 mysqli_sql_exception:服务器请求客户端未知的身份验证方法 [caching_sha2_password]

根据我在网上找到的信息,PHP 8.3 应该知道如何处理“caching_sha2_password”。我看到的唯一解决方法是强制使用最近从 mysql 停用的 mysql 本机密码。据我了解,使用 SHA 身份验证是未来的解决方案。因此,我宁愿让它工作,而不是诉诸使用过时功能的解决方法。

我没有看到任何解释 PHP 必须以特定方式配置才能完成这项工作。我准备打赌我错过了一些明显的东西......

phpinfo 指出:8.3.7 客户端 API 库版本 mysqlnd 8.3.7

错误信息是:

致命错误:** 未捕获 mysqli_sql_exception:服务器请求客户端未知的身份验证方法 [caching_sha2_password] 在 /[...]/testSO01.php:13 堆栈跟踪:#0 /[...]/testSO01.php( 13): mysqli_connect() #1 {main} 扔在 /[...]/testSO01.php 第 13 行

php mysql mysqli
1个回答
0
投票

"PHP 8.3 should know how to handle "caching_sha2_password". 

这并不完全正确。 PHP 本身不知道如何连接到 MySQL。连接由 MySQL 驱动程序完成(例如。

pdo_mysql

你的插件可能在 mysql 中被禁用,或者对于用户来说被禁用。

登录mysql控制台,查看插件是否处于活动状态。

mysql -u root -p

在 mysql CLI 中,

SHOW PLUGINS;

# See if the plugin is active for the user:
SELECT User, Host, plugin FROM mysql.user WHERE plugin = 'caching_sha2_password';

需要检查的事情很少。

  • mysql服务是否正在运行?
  • MySQL 中的
    caching_sha2_password
    是否处于活动状态?
  • 是否已将
    caching_sha2_password
    身份验证分配给用户?
  • 用户名/密码是否正确?
  • mysql 驱动程序(例如 pdo_mysql)支持
    caching_sha2_password
    吗?
© www.soinside.com 2019 - 2024. All rights reserved.