PHP 7.2.2 + mysql 8.0 PDO给出:客户端未知的身份验证方法[caching_sha2_password]

zio*_*tch 20 php mysql pdo

我正在使用php 7.2.2和mysql 8.0.

当我尝试连接正确的凭据时,我收到此错误:

PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")
Run Code Online (Sandbox Code Playgroud)

需要帮助来解决问题.

Rei*_*eid 23

发现这个地方,不记得在哪里(或者我会相信),但它适用于我,直到MySQL 8变得更好.PHP已准备好用于MySQL的caching_sha2_password.

在MySQL shell中(命令提示符,无论如何):

CREATE USER username@localhost identified with mysql_native_password by 'password';
Run Code Online (Sandbox Code Playgroud)

其中username是用户名,密码是该用户的密码.

然后,您可以在shell中添加权限 - 或者在Workbench中添加权限,因为用户现在具有身份验证类型:标准.

  • 只需使用 mysqld --default-authentication-plugin=mysql_native_password --console 启动你的 mysql (2认同)

Sze*_*obe 18

alter user 'username'@'localhost' identified with mysql_native_password by 'password';
Run Code Online (Sandbox Code Playgroud)

正如ailionx这里建议的那样:https : //github.com/laradock/laradock/issues/1390

  • 这是正确的,我必须混合该答案并在“my.cnf”文件中编辑“[mysqld] default-authentication-plugin=mysql_native_password”,如此处所述https://mysqlserverteam.com/upgrading-to- mysql-8-0-default-authentication-plugin-considerations/ 和这里 /sf/ask/3501885761/帕 (3认同)

Leo*_*eal 8

为了使用 mySQL 8(使用新的身份验证方法),您只需升级 PHP。

MySQL 8

当运行 7.1.16 之前的 PHP 版本或 7.2.4 之前的 PHP 7.2 时,将 MySQL 8 Server 的默认密码插件设置为 mysql_native_password 否则您将看到类似于 The server requests authentication method unknown to the client [caching_sha2_password] 的错误,即使在 caching_sha2_password 时未使用。

参考:https : //www.php.net/manual/en/ref.pdo-mysql.php

  • MySQL 8 的 caching_sha2_password 身份验证插件目前还无法与 PHP 一起使用。如果将 PHP 使用的 mysql 用户帐户转换为旧身份验证,PHP 7.2.4 或更高版本将与 MySQL 8 一起使用: ALTER USER 'user_name'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password'; 或者您可以引用旧身份验证创建一个新帐户。[mysqld] default_authentication_plugin = mysql_native_password 指令仅影响新帐户。它不会影响现有的用户帐户。 (2认同)

D0r*_*nd0 7

MySql安装图片:如果要使用mysql> = 8,并且您不关心caching_sha2_password,则在安装时选择第二个选项。

  • 如果您提供在 Linux 上使用 bash 获得相同结果的说明,我会选择这个答案。 (2认同)
  • 无需卸载 MYSQL 的方法:只需下载 MySql 安装程序,然后执行它。按照说明进行操作,选择“重新配置 MySql Server”并将身份验证方法更改为“使用旧版身份验证方法”。(不需要停止mysql服务,简单快捷) (2认同)