MediaWiki docker 图片 - mysql 连接问题

MediaWiki docker image - mysql connection problem

我是容器的新手,正在尝试在 Synology NAS 上设置 MediaWiki。 Synology 附带一个 MediaWiki 包,但它是 1.30,而且它们已经一年没有更新了。我需要一个较新的版本,以便我可以使用具有最新扩展的 LDAP。

所以,我找到了 this step-by-step 关于如何使用 docker 安装容器的指南。我正在用 MediaWiki 1.34.0 尝试它,它工作正常,直到我们测试与 mysql 数据库的连接 - 5) 输入你的 MySQL 容器名称及其根目录密码.

当我单击“继续”时,出现此错误:Cannot access the database: :real_connect(): (HY000/2054): The server requested authentication method unknown to the client. Check the host, username and password and try again. If using "localhost" as the database host, try using "127.0.0.1" instead (or vice versa).

mediawiki 容器和 mediawiki-mysql 容器似乎没有联网。我在网络下查看,它显示以下内容,因此他们应该能够进行通信。我可以 ping 172.26.0.2 和 172.26.0.3 地址,但不知道如何通过该过程中的步骤 5)。

我已经尝试了我能想到的一切。使用旧版本的 MediaWiki(例如 1.31)和 mysql,但每次连接问题都是症结所在。我已经达到了我的能力极限。

It seems to be that the mediawiki container and the mediawiki-mysql containers aren't networked

这个假设的来源会很有趣。从我从错误消息中读到的内容来看,您的容器可以完美地相互通信(它们应该,因为它们似乎在同一网络上,因为 mediawiki-mysql 容器也在桥接网络上并且在同一子网中)。

让我们看一下错误消息中有趣的部分:

The server requested authentication method unknown to the client

在我看来,这是 mysql 的错误配置。我假设您使用的是最新版本的 mysql docker 容器,它应该是 mysql 8 的某个版本。如果您现在 google 为此,您将甚至在 Whosebug 上也能找到很多帖子,例如:

要用您当前的数据集解决此问题,您可以将身份验证插件从套接字更改为密码:

  1. Log in as root to mysql
  2. Run this sql command:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Replace 'password' with your root password. In case your application does not log in to your database with the root user, replace the 'root' user in the above command with the user that your application uses.

或者,如果您正在使用 docker-compose 或可以以其他方式更改执行的命令,您可以按照 :

在命令中添加以下行: --default-authentication-plugin=mysql_native_password

Florian 的回答让我走上了正确的道路,尽管它并没有像他最初建议的那样起作用(我将他标记为正确答案)。我更改了根插件(上面的第 2 项),但仍然没有用。因此,我对 显示 SELECT user, authentication_string,plugin,host FROM mysql.user; 的所有用户 进行了同样的操作。

之后,我 运行 一个 FLUSH PRIVILEGES; 然后能够完成 MediaWiki 1.34.0 安装(通过 http://xxx.xxx.xxx.xxx:8080)。

我怀疑我真正需要做的只是 运行 在两个根帐户(root@localhost 和 root@%)上 ALTER USER 但它现在正在工作所以我要离开了它原样。 a good link 可以帮助您完成这些命令。