Jul*_*oro 6 mysql laravel mysql-8.0 valet
我刚刚安装了我的开发环境。
当我尝试通过 SequelPro 连接 mysql db 时,我得到:
Authentication plugin 'caching_sha2_password' cannot be loaded
Run Code Online (Sandbox Code Playgroud)
如:无法加载身份验证插件 'caching_sha2_password',我运行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
Run Code Online (Sandbox Code Playgroud)
然后我可以通过 SequelPro 连接我的数据库
但是当我执行 Laravel 命令时:
php artisan migrate
Run Code Online (Sandbox Code Playgroud)
我得到:
PDOException::("PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109")
Run Code Online (Sandbox Code Playgroud)
我现在该怎么办 ?
PD:我在 Mac 上使用 Laravel Valet,而 Laravel 5.6。
您必须使用 mysql 命令通过 shell 更改在 Laravel 应用程序中的使用
ALTER USER 'user'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your password';
ALTER USER 'user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your password';
Run Code Online (Sandbox Code Playgroud)
        使用$ mysql -uUser -pPa$$w0rdMySQL连接后可以使用PHPmysqli_real_connect()或PDO打开
确保用户启用了缓存 sha2 密码,而不是本机密码。(PHP 7.2.9-1、MySQL 8.0.12)
当更改为本机密码时,PHP 会说
mysqli::real_connect():执行 caching_sha2 auth 时出现意外的服务器响应:109
当缓存 sha2 密码处于活动状态时,我总是得到:
mysqli::real_connect(): (HY000/1045): 用户“User”@“localhost”访问被拒绝(使用密码:YES)
因此尝试使用 Shell 从 Shell 登录$ mysql,成功了,之后我就能够使用 PHP 连接了。看起来像是 PHP mysqlnd 中的一个错误。
在打开 MySQL 连接之前实现一个shell_exec('mysql -u'.$user.' -p"'.$password.'" -e quit > /dev/null 2>&1');权限,现在对我来说解决了这个问题。
重新启动或重新启动 MySQL 服务,重置缓存的密码,并且将再次弹出访问被拒绝的消息。
希望这可以帮助。
问候
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           7206 次  |  
        
|   最近记录:  |