我运行php artisan migrate
在Connection.php第664行中:
SQLSTATE [HY000] [2054]服务器请求客户端未知的身份验证方法(SQL:从information_schema.tables中选择*,其中table_schema = aviandb,table_name =迁移)
在Connector.php第68行中:
SQLSTATE [HY000] [2054]服务器请求了客户端未知的身份验证方法
在Connector.php第68行中:
PDO :: __ construct():服务器请求客户端未知的身份验证方法[caching_sha2_password]
我该如何解决?
答案 0 :(得分:2)
您的php mysql扩展名不支持您正在运行的MySQL服务器的版本。
我假设您正在运行MySQL 8.0,在发布本文时,它是新的。
您需要通过支持最新版本的MySQL来更新或重建PHP,或降级MySQL Server版本。
另一种解决方案是使用mysql_native_password选项创建用户。
CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
答案 1 :(得分:2)
MySQL 8和Laravel:服务器请求客户端未知的身份验证方法
因此,解决方法就在这里。您可以使用“旧的”身份验证机制创建用户,PHP的MySQL数据库驱动程序仍然期望该机制。
CREATE USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
GRANT ALL PRIVILEGES ON db_name.* TO 'user_name'@'localhost';
ALTER USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
然后重新启动mysql
服务器
sudo service mysql restart;
答案 2 :(得分:1)
对于
PDO :: __ construct():服务器请求客户端未知的身份验证方法[caching_sha2_password]
问题,有一个日本博客涵盖了这个问题:
https://qiita.com/r641y/items/7f0ca12ced72363f9448
总而言之,您可以通过命令行登录mysql,然后将密码类型从caching_sha2_password
更改为mysql_native_password
。
在mysql中实现此目的的代码是:
ALTER USER 'user'@"localhost" IDENTIFIED WITH mysql_native_password BY 'password'
您可以使用mysql的用户名和密码替换'user'和'password'。
然后再次在mysql中:
mysql> FLUSH PRIVILEGES;
完成后,请记住更新.env文件的()
DB_USERNAME =和DB_PASSWORD =。
下面有一个有关如何获取.env文件的示例视频: https://laracasts.com/series/laravel-from-scratch-2017/episodes/4?autoplay=true
希望这会有所帮助! 它适用于我的Macbook Pro High Sierra。
答案 3 :(得分:0)
在查询mysql上运行此脚本,只需输入新密码即可使用
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password'