laravel php 工匠迁移

Alf*_*bia 9 php mysql pdo laravel

当我跑 php artisan migrate

在 Connection.php 第 664 行中:

SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法(SQL:select * from information_schema.tables where table_schema = aviandb and table_name = migrations)

在 Connector.php 第 68 行:

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

在 Connector.php 第 68 行:

PDO::__construct():服务器请求客户端未知的身份验证方法[caching_sha2_password]

我该如何解决?

Dev*_*von 20

您的 php mysql 扩展不支持您正在运行的 MySQL 服务器版本。

我假设您正在运行 MySQL 8.0,它在撰写本文时是新的。

您需要更新或重建 PHP 以支持最新版本的 MySQL,或者降级您的 MySQL 服务器版本。

另一种解决方案是使用 mysql_native_password 选项创建用户。

CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)


小智 10

为了

PDO::__construct():服务器请求客户端未知的身份验证方法[caching_sha2_password]

问题,有一个日本博客涵盖了这个:

https://qiita.com/r641y/items/7f0ca12ced72363f9448

总而言之,您可以通过命令行登录 mysql,然后将密码类型从 更改caching_sha2_passwordmysql_native_password类型。

在 mysql 中实现此目的的代码是:

ALTER USER 'user'@"localhost" IDENTIFIED WITH mysql_native_password BY 'password'
Run Code Online (Sandbox Code Playgroud)

您可以将“用户”和“密码”替换为您的 mysql 用户名和密码。

然后再次在 mysql 中:

mysql> FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

完成后,记得更新 .env 文件的 ()

DB_USERNAME= 和 DB_PASSWORD= 。

下面有一个关于如何获取 .env 文件的示例视频:https ://laracasts.com/series/laravel-from-scratch-2017/episodes/4?autoplay = true

希望这可以帮助!它适用于我的 macbook pro high sierra。


小智 5

在您的查询 mysql 上运行此脚本,只需您的新密码即可工作

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password'
Run Code Online (Sandbox Code Playgroud)


Dip*_*mar 5

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';
Run Code Online (Sandbox Code Playgroud)

然后重启mysql服务器

sudo service mysql restart;
Run Code Online (Sandbox Code Playgroud)