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

时间:2018-03-03 11:20:32

标签: 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]")

需要帮助来解决问题。

4 个答案:

答案 0 :(得分:17)

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

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

CREATE USER username@localhost identified with mysql_native_password by 'password';

其中用户名是用户名,密码是该用户的密码。

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

答案 1 :(得分:8)

<div class="wrapper">
      <h1 class="blur">
        Our principles inform everything we do. Whether you're preparing content, designing an interface or developing an entire service, start by reading these.
      </h1>
      <h1 class="h1">
        Our principles inform everything we do. Whether you're preparing content, designing an interface or developing an entire service, start by reading these.
      </h1>
    </div>
    
    <svg id="googlesMain" height="0" width="0">
      <defs>
        <filter id="f1" x="0" y="0">
          <feGaussianBlur in="SourceGraphic" stdDeviation="15" />
        </filter>
      </defs>
        <clipPath id="svgPath">
           <circle id="clipPath" cx="250" cy="250" r="250"/>
        </clipPath>
    </svg>

alter user 'username'@'localhost' identified with mysql_native_password by 'password'; 在这里建议:https://github.com/laradock/laradock/issues/1390

答案 2 :(得分:4)

MySql installation picture:如果你想使用mysql&gt; = 8并且你不关心caching_sha2_password, 只需在安装时选择第二个选项。

答案 3 :(得分:0)

要使用mySQL 8(具有新的身份验证方法),您可以升级PHP。

  

MySQL 8

     

当运行7.1.16之前的PHP版本或7.2.4之前的PHP 7.2时,请将MySQL 8 Server的默认密码插件设置为mysql_native_password,否则将看到类似于以下错误:客户端未知的服务器请求的身份验证方法[caching_sha2_password]即使不使用caching_sha2_password。

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