laravel php artisan迁移

laravel php artisan迁移,php,mysql,laravel,pdo,Php,Mysql,Laravel,Pdo,当我运行php artisan migrate时 在Connection.php第664行: SQLSTATE[HY000][2054]服务器请求的身份验证方法对客户端来说是未知的(SQL:select*from information_schema.tables,其中table_schema=aviandb和table_name=migrations) 在Connector.php第68行中: SQLSTATE[HY000][2054]服务器请求的身份验证方法客户端未知 在Connector.

当我运行php artisan migrate时

在Connection.php第664行:

SQLSTATE[HY000][2054]服务器请求的身份验证方法对客户端来说是未知的(SQL:select*from information_schema.tables,其中table_schema=aviandb和table_name=migrations)

在Connector.php第68行中:

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

在Connector.php第68行中:

PDO::_构造():服务器请求的身份验证方法客户端未知[缓存_sha2_密码]


如何解决?

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

我假设您运行的是MySQL 8.0,这在本文发表时是新的

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

另一个解决方案是使用mysql\u native\u password选项创建用户

CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
为了

PDO::_构造():服务器请求的身份验证方法客户端未知[缓存_sha2_密码]

一期,有一个日本博客,内容包括:

总之,您可以通过命令行登录mysql,然后将密码类型从
caching\u sha2\u password
更改为
mysql\u native\u password
类型

在mysql中实现这一点的代码是:

ALTER USER 'user'@"localhost" IDENTIFIED WITH mysql_native_password BY 'password'
您可以用mysql的用户名和密码替换“用户”和“密码”

然后在mysql中:

mysql> FLUSH PRIVILEGES;
完成后,请记住更新.env文件的()

DB_用户名=和DB_密码=

下面有一个关于如何访问.env文件的示例视频:

希望这有帮助!
它在我的macbook pro high sierra上工作。

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

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password'

MySQL 8&Laravel:服务器请求的身份验证方法客户端不知道

所以,这是解决办法。您可以创建一个具有“旧”身份验证机制的用户,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;

我遇到了同样的问题,所以我按照你上次的建议去纠正它。事实上,我必须使用MySQL CLI来创建具有该选项的用户,因为我正在键入的最新版本MySQL Workbench(8.0.11rc)不允许您这样做。我可以选择
标准
作为
身份验证类型
进行创建,但一旦我应用了这些更改,它就会自动更改为
缓存\u sha2\u密码
,并且变灰,因此我无法再次更改它。我甚至在选项文件中将
mysql\u native\u password
设置为
default\u authentication\u plugin
。@Sturm,老实说,我甚至还不会接触mysql 8.0。“除非你绝对需要一个新功能,否则不值得麻烦和可能的不稳定。我倾向于同意,”德文说。其实我不是有意的;我只是做了一个简单的
brew更新
brew升级
,没有意识到它会彻底摧毁我的旧MySQL安装,并将其替换为新的8.0版本。