1

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

我到处找,找不到解决方法,所以你们是我最后的希望,哈哈。

Docker 版本17.12.0-ce,构建 c97c6d6 这是我的 docker ps
码头工人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
4

2 回答 2

3

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

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

于 2018-03-02T19:44:17.450 回答
-1

这是libmysqlclient由于MySQL 8.0.4 版本的更新导致的,该版本已将默认身份验证方法更改为更安全的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
于 2020-01-07T10:43:17.967 回答