Laravel 5.7在WampServer3.3运行报错SQLSTATE[HY000][2054]求助
问题描述
环境信息:
- Laravel 5.7
- PHP 7.1
- WampServer 3.3
遇到的错误:
In Connection.php line 664: SQLSTATE[HY000] [2054] 服务器请求了客户端未知的认证方法 (SQL: select * from information_schema.tables where table_schema = razi_oil-db and table_name = languages) In Connector.php line 70: SQLSTATE[HY000] [2054] 服务器请求了客户端未知的认证方法 In Connector.php line 70: PDO::__construct(): 服务器请求了客户端未知的认证方法 [caching_sha2_password]
问题原因
WampServer 3.3默认搭载的MySQL 8.0+版本,默认采用caching_sha2_password作为用户认证方式,但PHP 7.1的PDO扩展不支持这种新认证机制,导致数据库连接时触发认证失败。
解决办法
方法1:修改项目数据库用户的认证方式
- 打开Wamp控制台:点击Wamp图标 → MySQL → MySQL Console
- 输入MySQL root密码(无密码直接回车)
- 执行以下SQL语句,替换
your_username和your_password为Laravel项目.env文件中配置的数据库用户名和密码:
ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES;
- 重启Wamp的MySQL服务,重新运行项目即可。
方法2:全局修改MySQL默认认证方式(可选)
如果需要所有新创建的数据库用户都自动兼容旧认证方式,可修改MySQL配置文件:
- 点击Wamp图标 → MySQL → my.ini
- 在
[mysqld]区块下添加一行配置:
default_authentication_plugin=mysql_native_password
- 保存文件后重启MySQL服务,后续新建用户将默认使用
mysql_native_password认证。
内容的提问来源于stack exchange,提问作者mjavadtatari
相关产品推荐
相关产品推荐

