服务器请求客户端未知的身份验证方法(PHP)

时间:2018-09-17 09:17:02

标签: php mysql-8.0

我正在PHP 7.0上运行MySQL版本8。

尝试从PHP连接到数据库时出现以下错误:

  

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

如何解决?

9 个答案:

答案 0 :(得分:45)

@mohammed,这通常归因于您的mysql数据库正在使用的身份验证插件。

默认情况下,由于某种原因,mysql 8默认插件为auth_socket。应用程序大多数时候希望使用密码登录到您的数据库。

如果尚未更改mysql默认身份验证插件,则可以通过以下方式进行更改:
 1.以root用户身份登录mysql
 2.运行以下sql命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password
BY 'password';  

用您的根密码替换“密码”。如果您的应用程序没有以root用户身份登录到数据库,请用应用程序使用的用户替换上述命令中的'root'用户。

数字海洋在这里Installing Mysql

对此进行了详细说明。

答案 1 :(得分:21)

您必须更改MySQL设置。 编辑my.cnf文件,并将此设置放在mysqld部分:

[mysqld]
default_authentication_plugin= mysql_native_password

然后运行以下命令:

FLUSH PRIVILEGES;

以上命令将使默认身份验证机制的更改生效。

答案 2 :(得分:19)

我已经尝试了很多方法,但是只有这对我有用

感谢workaround

检查您的 **。env

MYSQL_VERSION=latest

然后键入此命令

$ docker-compose exec mysql bash
$ mysql -u root -p 

(以root用户身份登录)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';

然后进入phpmyadmin并以:p登录

  • 主机-> mysql
  • 用户->根
  • 密码->根

希望有帮助

答案 3 :(得分:1)

遇到同样的问题,我无法在mysql版本8上运行wordpress docker容器,因为其默认身份验证机制是caching_sha2_password而不是mysql_native_password。

为了解决此问题,我们必须将默认身份验证机制重置为mysql_native_password。

在mysql安装中找到my.cnf文件,通常在linux机器上,它位于以下位置-/ etc / mysql

编辑my.cnf文件,并在[mysqld]标题下添加以下行

default_authentication_plugin = mysql_native_password

保存文件,然后使用root用户登录mysql命令行

运行命令FLUSH PRIVILEGES;

答案 4 :(得分:1)

这里没有答案对我有用。我要做的是:

  1. 重新运行安装程序。
  2. 选择产品“ MySQL服务器”旁边的快速操作“重新配置”
  3. 浏览选项,直到找到“身份验证方法”,然后选择“使用旧式身份验证方法”

之后,它可以正常工作。

答案 5 :(得分:0)

我正在使用Laravel Lumen构建一个小型应用程序。
对我来说是因为我没有在.env文件中定义DB_USERNAME。

DB_USERNAME=root

设置这个解决了我的问题。

答案 6 :(得分:0)

在my.cnf文件中,检查以下2个步骤。

  • 检查此值-

    old_passwords = 0;

    应为0。

  • 也请检查此内容

    [mysqld] default_authentication_plugin = mysql_native_password另一个 检查值是要确保

    [mysqld]部分应该是这样。

答案 7 :(得分:0)

preferences -> mysql -> initialize database -> use legacy password encryption(instead of strong) -> entered same password

作为我的 config.inc.php 文件,重新启动了apache服务器,它可以正常工作。我对此仍然感到怀疑,因此我停止了apache和mysql服务器,然后再次启动它们,现在它可以正常工作了。

答案 8 :(得分:-2)

如果正在运行xampp或wampp,请检查sql server的用户名和密码,检查phpmyadmin用户名和密码