MySQL PHP不兼容SQLSTATE[HY000][2054]服务器请求的身份验证方法是客户端已知的

MySQL PHP不兼容SQLSTATE[HY000][2054]服务器请求的身份验证方法是客户端已知的,php,mysql,authentication,pdo,compatibility,Php,Mysql,Authentication,Pdo,Compatibility,我试图使用PDO与php建立mysql连接 以下是我使用的软件版本: 视窗7 64 mysql 8.0.18 php 7.3.11 我尝试在PHP代码中执行连接命令行: try { $bdd = new PDO('mysql:host=localhost;dbname=test_php', $user, $pass); } catch (Exception $e) { phpinfo(); exit('Erreur : ' . $e->getMessage())

我试图使用PDO与php建立mysql连接

以下是我使用的软件版本:

  • 视窗7 64
  • mysql 8.0.18
  • php 7.3.11
我尝试在PHP代码中执行连接命令行:

try {
    $bdd = new PDO('mysql:host=localhost;dbname=test_php', $user, $pass);
} catch (Exception $e) {
    phpinfo();
    exit('Erreur : ' . $e->getMessage());
}
php服务器在执行上述代码时显示此错误消息:

Erreur:SQLSTATE[HY000][2054]服务器请求的身份验证方法客户端未知

我已经在mysql中仔细检查了$user和$password,还创建了新的mysql帐户,以确保我没有犯错误

下面是我激活pdo驱动程序的php.ini文件示例(还修复了Windows中“ext”文件夹的位置问题)


有人知道我做错了什么吗?

我花了很长时间才弄清楚到底发生了什么。这就是我找到的解决办法

创建数据库用户时,请使用mysql_native_密码类型作为密码:

CREATE USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; 
mysql_native_password是要使用的旧身份验证方法,而不是导致错误的新身份验证方法。
这样,PHP服务器和mysql数据库之间的身份验证协议双方都能理解。

没有代码支持使用的问题/标记。哦,我明白了。这不是Stack上的工作方式。您需要发布代码,然后为您发布解决方案。然而,这也应该帮助可能经历过同样问题的其他人。否则,它将过于本地化。我花了很长时间才弄清楚发生了什么。这就是我找到的解决方案::-创建数据库用户时,使用mysql_native_密码类型作为密码
创建用户'your_user'@'localhost',通过'your_password'标识为mysql_native_密码
mysql\u native\u password是要使用的旧身份验证方法,而不是导致错误的新身份验证方法。我已经更正了我的问题,希望它足够清楚。我把答案放在评论中,以避免丢失,因为我找不到任何“解决方案”按钮(可能是因为问题“已关闭”)。
CREATE USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';