mysql 8.0+phpmyadmin+docker[缓存\u sha2\u密码错误]

de90aj5v  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(290)

正如其他人所提到的(参考文献1、参考文献2和参考文献3),当前的phpmyadmin版本(4.8.2)+mysql 8.0.11+php7.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迁移手册中所述,并在参考文献2中描述为解决方案,您可以通过在docker中执行以下mysql查询来纠正此问题:

ALTER USER root IDENTIFIED WITH mysql_native_password BY 'ROOTPASSWORD';

(为了运行它,我使用dockerexec-itcontaineridbash并执行mysql命令)
而且很有效。主要的问题是,我需要在容器启动时立即启动这个查询(当前的方法是手动的,远不能扩展)。我想可能有不同的方式:
通过执行一个php脚本,在设置完所有内容后运行查询(这是不安全的)
在完成所有设置后,在bash中运行上述命令
第一个是不安全的imo,因为mysql用户必须具有高权限,尽管当这个脚本运行时只有root用户。我还没测试呢。
第二个是最好的imo,但我不知道如何使用dockerfile实现,因为我在那里键入的所有内容都是在安装mysql和phpmyadmin之前运行的。我怎么能做到呢?
我当前的dockerfile可以在这里看到,docker-compose.yml可以在这里看到。

enxuqcxy

enxuqcxy1#

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

相关问题