laravel php artisan migration

时间:2018-06-22 19:19:16

标签: php laravel

我运行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]

我该如何解决?

4 个答案:

答案 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'