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

2022-08-30 06:23:23

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

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

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

PHP 可能会显示此错误

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

如何解决此问题?


答案 1

@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”用户替换为应用程序使用的用户。

数字海洋在这里对此进行了更多阐述 安装Mysql


答案 2

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

[mysqld]
default_authentication_plugin= mysql_native_password

然后运行以下命令:

FLUSH PRIVILEGES;

上述命令将对默认认证机制的变更生效。


推荐