今天没事儿安装了个mysql8.0然后就把常用的laravel 链上mysql8.0结果运行迁移的时候遇到两个问题
第一个:
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (View: ...)
出现这个错误是因为mysql8.0用了 Caching SHA-2 这个东西认证官方文档(https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html)
如果你用的是其他工具来链接mysql的话 就会发现提示你错误,就是因为这个认证方式的原因。
官方文档有讲可以修改 认证方式
default_authentication_plugin=mysql_native_password
这里需要注意:
因为mysql8默认的密码就是SHA-256所以如果只在my.ini修改认证方式是不行的还必须要修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
修改密码完成. 改到这里就OK了.
第二个
SQLSTATE[42000]: Syntax error or access violation: 1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'
解决方法:
config/database.php文件中 mysql配置项将 strict=>false, 即可解决