phpmyadmin 上的 laradock 错误 - 无法连接

laradock error on phpmyadmin - can't connect

我刚开始使用 docker、laradock 和 laravel,在设置整个环境后,我尝试登录我的 phpmyadmin,但我无法登录。

我找遍了几乎所有地方都找不到修复它的方法所以你们是我最后的希望哈哈。

Docker 版本 17.12.0-ce,构建 c97c6d6 这是我的 docker ps

我项目的.env

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

这是我从 phpmyadmin (localhost:8080) 得到的错误

#2054 - The server requested authentication method unknown to the client
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

最简单的解决方案是恢复到 MySQL 的早期版本。无论如何,这可能是个好主意,因为 8.0 是 "developer's release"。不幸的是,Laradock 目前有一个错误,无论您在 .env 文件中设置什么,它都会安装 8.0。我已经在 Laradock 上提交了 PR 来解决这个特定问题。

https://github.com/laradock/laradock/pull/1409

这是由于自 MySQL version 8.0.4 以来对 libmysqlclient 的更新将默认身份验证方法更改为更安全的 sha256_password

一旦 Laravel 和其他软件包(如 PhpMyAdmin)更新以支持这种新的、更安全的身份验证方法,此问题就会自行解决。

如果您不能删除并重建现有的mysql数据卷,只需:

  1. 登录到您的 mysql 容器(docker-compose exec mysql mysql -uroot -proot
  2. 执行ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
  3. 为您可能已创建的任何其他用户重复步骤 2。

如果您可以重新创建您的mysql数据量:

  1. 修改您的 my.conf 文件。在 [mysqld] 下添加以下配置选项 default_authentication_plugin=mysql_native_password
  2. 删除您的 mysql 卷 rm -rf ~./laradock/data/mysql
  3. 重建 mysql 容器 docker-compose -d --build mysql phpmyadmin