PHP与MySQL 8.0+错误:服务器请求身份验证方法未知的客户端

我在PHP 7.0上运行MySQL version 8。

当我试图从PHP连接到我的数据库时,我得到以下错误:

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

PHP可能会显示此错误

mysqli_connect():服务器请求的身份验证方法未知客户端[caching_sha2_password]在D:\xampp\htdocs\reg\server.php第10行

我该如何解决这个问题?

373879 次浏览

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

[mysqld]
default_authentication_plugin= mysql_native_password

然后执行如下命令:

FLUSH PRIVILEGES;

该命令将使缺省认证机制的修改生效。

@mohammed,这通常归因于你的mysql数据库正在使用的认证插件。

默认情况下,mysql 8的默认插件是auth_socket。应用程序大多数时候希望使用密码登录到数据库。

如果你还没有修改mysql的默认认证插件,你可以这样做:
1. 以root用户登录mysql
2.

.执行sql命令
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password
BY 'password';

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

数字海洋在这里详细阐述了一些安装Mysql

我试过很多其他的解决方案,但只有这个对我有效。

谢谢你的解决方案

检查你的。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,登录为:

  • 宿主→mysql
  • 用户→根
  • 密码→根

希望能有所帮助

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

DB_USERNAME=root

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

在my.cnf文件检查以下2步。

  • 检查这个值-

    old_passwords = 0;

    它应该是0

  • check this also-

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

    [mysqld] section应该是这样的

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

作为我的config.inc.php文件,重新启动apache服务器,它工作。我仍然怀疑它,所以我停止了apache和mysql服务器,并再次启动它们,现在它正在工作。

面对同样的问题,我无法使用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;

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

  1. 重新运行安装程序。
  2. 选择产品“MySQL Server”旁边的快速操作“重新配置”
  3. 浏览选项,直到您到达身份验证方法,并选择“使用遗留身份验证方法”

之后就可以正常工作了。