MySQL 8.0 + phpMyAdmin + docker [caching_sha2_password错误]

时间:2018-07-26 03:56:31

标签: php mysql docker phpmyadmin

正如其他人(Ref 1 Ref 2Ref 3)当前的phpMyAdmin版本(4.8.2)+ MySQL 8.0.11 + PHP 7.2.8无法正常工作。

当您尝试打开phpMyAdmin时出现错误,它显示一条错误消息:

#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迁移手册here中所述,在参考资料2中已描述为解决方案,您可以通过在docker内部执行以下mysql查询来纠正此问题:

ALTER USER root IDENTIFIED WITH mysql_native_password BY 'ROOTPASSWORD';

(为了运行此命令,我使用 docker exec -it CONTAINERID bash 并执行 mysql 命令)

它有效。主要问题是我需要在容器启动后立即触发该查询(当前方法是手动的,而且扩展性很差)。我认为这可以通过不同的方式实现:

  • 在所有设置完成后,通过执行运行查询的PHP脚本(IMO,这是不安全的)
  • 设置完所有内容后,通过bash运行上述命令

第一个是不安全的IMO,因为mysql用户必须具有较高的特权,尽管运行此脚本时只有root用户。我还没有测试。

第二个是最好的IMO,但是我无法弄清楚如何使用Dockerfile实施,因为我键入的所有内容都在安装mysql和phpMyAdmin之前运行。我该如何实现?

可以看到我当前的Dockerfile here,可以看到here docker-compose.yml。

1 个答案:

答案 0 :(得分:1)

作为一个简单的解决方案,您可以构建自定义的mysql映像并在其中运行命令。然后mysql将以已经进行的修改开始。