【问题标题】:MediaWiki docker image - mysql connection problemMediaWiki docker image - mysql 连接问题
【发布时间】:2020-04-17 20:40:09
【问题描述】:

我是容器新手,正在尝试在 Synology NAS 上设置 MediaWiki。 Synology 附带一个用于 MediaWiki 的软件包,但它是 1.30 并且一年没有更新。我需要一个更新的版本,这样我就可以使用带有最新扩展的 LDAP。

所以,我找到了this step-by-step 指南,了解如何使用 docker 安装容器。我正在使用 MediaWiki 1.34.0 进行尝试,在我们测试与 mysql 数据库的连接之前它工作正常 - 5) 输入您的 MySQL 容器名称及其 root 密码。

当我点击继续时,我收到此错误: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,但这个连接问题是每次的症结所在。我已经达到了我的能力极限。

【问题讨论】:

标签: docker mediawiki synology


【解决方案1】:

好像是mediawiki容器和mediawiki-mysql容器没有联网

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

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

服务器请求客户端未知的身份验证方法

在我看来,这是 mysql 的错误配置。我假设你使用的是最新版本的 mysql docker 容器,它应该是 mysql 8 的某个版本。如果你现在用谷歌搜索这个,你会在 stackoverflow 上找到很多帖子,比如: https://stackoverflow.com/a/53881212/3394281 php mysqli_connect: authentication method unknown to the client [caching_sha2_password]

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

  1. 以 root 身份登录 mysql
  2. 运行这个 sql 命令:

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

将“密码”替换为您的根密码。如果您的应用程序未使用 root 用户登录到您的数据库,请将上述命令中的“root”用户替换为您的应用程序使用的用户。

或者,如果您正在使用 docker-compose 或者可以以其他方式更改执行的命令,您可以关注this answer

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

【讨论】:

  • 那行不通。作为我的第一次尝试,我遵循了您上面的 1. 和 2.。仍然得到the server requested authentication method...。请注意,当我从 mysql 容器中的 bash 运行 ALTER USER 命令时,我得到了响应 Query OK, 0 rows affected (0.22 sec)
  • 接下来,我停止并删除了两个容器(mediawiki 和 mediawiki-mysql)并删除了网桥。然后我按照上面链接的说明进行操作,除了我将 MySQL 安装命令修改为:sudo docker container run -d --name mediawiki-mysql -v mediawiki-mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<root_pwd> mysql --default-authentication-plugin=mysql_native_password. 相同的结果...the server requested authentication method... 错误。
  • 我可能应该给出提示,您需要为您正在连接的用户更改身份验证插件 :) 但您已经明白了,正如您在回答中所写的那样。跨度>
  • 谢谢先生。感谢您的帮助!
【解决方案2】:

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

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

我怀疑我真正需要做的只是在两个 root 帐户(root@localhost 和 root@%)上运行 ALTER USER,但它现在正在工作,所以我将其保留原样。这是a good link,它将帮助您执行这些命令。

【讨论】:

  • 在 Synology 上的 MediWiki docker install 出现各种问题后,我联系了 Synology 技术支持。他们告诉我,我的方法(SSH 进入 Synology 框并从 bash shell 发出 docker 命令等)不受支持。仅支持通过 DSM 使用 docker 接口)。仅供参考,以免您迷失在杂草中。
猜你喜欢
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
相关资源
最近更新 更多