【发布时间】:2018-08-11 12:30:30
【问题描述】:
我正在使用 php 7.2.2 和 mysql 8.0。
当我尝试使用正确的凭据连接时,我收到此错误:
PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")
需要帮助来解决问题。
【问题讨论】:
-
MySQL 8.0 不是生产就绪的喷气机。 PHP 开发人员可能没有在较新的 PHP 版本中实现 MySQL 的 8.0 连接协议(auth with caching_sha2_password)。如果您将 MySQL 8.0 配置为在 mysql_native_password 模式下运行,您也许可以解决此问题。
-
没关系。似乎没有选项 mysql_native_password=1 可配置到 mycnf 中,也可以通过命令行从 mysql 客户端使用它,并且似乎在 pdo 中也可以作为选项使用。只是无法弄清楚如何将事物组合在一起。
-
在 MySQL 8 中,引入了一个新的身份验证插件:caching_sha2_password。该插件不适用于 PHP,因为 PHP 的 mysqlnd 尚未更新。如果您将 mysql 用户帐户 PHP 连接到数据库转换为旧身份验证,PHP 7.2.4 或更高版本将与旧身份验证插件 (mysql_native_password) 一起使用! ALTER USER 'user_name'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password';在您的 /etc/my.cnf 文件中,您可以添加: default_authentication_plugin = mysql_native_password 但此默认值仅适用于以后创建的所有新帐户。