MediaWiki docker映像-mysql连接问题

MediaWiki docker映像-mysql连接问题,docker,mediawiki,synology,Docker,Mediawiki,Synology,我是容器新手,正在尝试在Synology NAS上建立MediaWiki。Synology为MediaWiki提供了一个软件包,但它的版本是1.30,一年内都没有更新。我需要一个更新的版本,这样我就可以使用LDAP和最新的扩展 因此,我找到了如何使用docker安装容器的指南。我正在使用MediaWiki 1.34.0进行尝试,它可以正常工作,直到我们测试到mysql数据库的连接为止——5)输入您的mysql容器名称及其根密码 单击“继续”时,出现以下错误:无法访问数据库::real_conne

我是容器新手,正在尝试在Synology NAS上建立MediaWiki。Synology为MediaWiki提供了一个软件包,但它的版本是1.30,一年内都没有更新。我需要一个更新的版本,这样我就可以使用LDAP和最新的扩展

因此,我找到了如何使用docker安装容器的指南。我正在使用MediaWiki 1.34.0进行尝试,它可以正常工作,直到我们测试到mysql数据库的连接为止——5)输入您的mysql容器名称及其根密码

单击“继续”时,出现以下错误:
无法访问数据库::real_connect():(HY000/2054):服务器请求的身份验证方法客户端未知。请检查主机、用户名和密码,然后重试。如果使用“localhost”作为数据库主机,请尝试使用“127.0.0.1”(反之亦然)。

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

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

mediawiki容器和mediawiki mysql容器似乎没有联网

这一假设从何而来会很有趣。从我从错误消息中读到的信息来看,您的容器可以很好地相互通信(它们应该在同一网络上,因为mediawiki mysql容器也在桥接网络和同一子网中)

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

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

在我看来,这是对mysql的错误配置。我假设您使用的是mysql docker容器的最新版本,应该是mysql 8的某个版本。如果你现在用谷歌搜索这个,你会发现很多帖子,甚至在stackoverflow上,比如:

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

  • 以root用户身份登录mysql
  • 运行以下sql命令:
  • ALTER用户'root'@'localhost'用mysql\u本机\u密码标识
    通过“密码”

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

    或者,如果您正在使用docker compose,或者可以以其他方式更改已执行的命令,则可以执行以下操作:

    将以下行添加到命令:
    --default authentication plugin=mysql\u native\u password

    Florian的答案让我找到了正确的线索,尽管它没有像他最初建议的那样起作用(我将他的答案标记为正确答案)。我更改了根插件(上面的第2项),但仍然不起作用。因此,我对所有用户都做了相同的操作,显示了mysql.user中的
    选择用户、验证字符串、插件、主机

    之后,我运行了一个
    FLUSH特权,然后能够完成MediaWiki 1.34.0安装(通过)


    我怀疑我真正需要做的就是在两个根帐户上运行
    alteruser
    (root@localhost但它现在起作用了,所以我还是保持原样。这是一个有助于执行这些命令的程序。

    您读过synology docs吗?Yuri-没有太多。容器不使用与Docker主机相同的网络,这不起作用。我跟着你的1。二,。以上是我的第一次尝试。仍然获得服务器请求的身份验证方法…
    。请注意,当我从mysql容器中的bash运行ALTER USER命令时,我得到了响应
    Query OK,0行受影响(0.22秒)
    接下来,我停止并删除了两个容器(mediawiki和mediawiki mysql),并删除了网桥。然后我按照上面链接的说明进行操作,只是将MySQL安装命令修改为:
    sudocker container run-d--name mediawiki MySQL-v mediawiki MySQL:/var/lib/MySQL-e MySQL\u ROOT\u PASSWORD=MySQL--default authentication plugin=MySQL\u native\u PASSWORD。
    相同的结果…
    服务器请求了身份验证方法…
    错误。我可能应该给出提示,您需要更改与您连接的用户的身份验证插件:),但是您已经得到了,正如您在回答中所写的。谢谢您,先生。谢谢你的帮助!在Synology上安装MediWiki docker出现各种问题后,我联系了Synology技术支持。他们告诉我,我的方法(ssh进入Synology框,并从bashshell发出docker命令等)不受支持。仅支持通过DSM使用docker接口)。在你迷失在野草中之前,请告诉我。