【发布时间】:2018-10-30 14:48:14
【问题描述】:
当我尝试连接到数据库时,在 PHP Symfony4 /PDO Doctrine with MySql 8.0.13 Server 中出现此错误:
驱动程序发生异常:SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法
【问题讨论】:
标签: php mysql symfony doctrine
当我尝试连接到数据库时,在 PHP Symfony4 /PDO Doctrine with MySql 8.0.13 Server 中出现此错误:
驱动程序发生异常:SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法
【问题讨论】:
标签: php mysql symfony doctrine
对于 MySQL 8 和 PHP7+,您必须使用旧式密码:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
【讨论】:
'root'@'127.0.0.1' 出错。但后来我尝试了'root'@'localhost',效果很好。
所以,这里是修复。您可以使用 PHP 的 MySQL 数据库驱动程序仍然期望的“旧”身份验证机制创建用户。
CREATE USER 'ohdear_ci'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ohdear_secret';
GRANT ALL PRIVILEGES ON ohdear_ci.* TO 'ohdear_ci'@'localhost';
如果您已有对数据库具有权限的现有用户,则可以改为修改该用户。
ALTER USER 'ohdear_ci'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ohdear_secret';
之后,您的 PHP 代码可以再次连接到 MySQL 8。
【讨论】:
您可以在 mysql 配置中设置指令:
[mysqld]
default_authentication_plugin=mysql_native_password
【讨论】: