实际问题

实际问题

我必须设置一个新的 MediaWiki,并且对配置建议越来越不满,因为按照官方文档中概述的配置后,这些建议似乎无法很好地发挥作用。

两台服务器。一个用于应用程序的 nginx 网络服务器。一个用于数据库的 mariadb。在网络服务器上安装并配置 MediaWiki。在数据库服务器上安装并配置 mariadb。
创建一个专属的 mediawiki db 用户,我们称之为mediawiki@nginx
创建一个专属的 mediawiki db 管理员用户,我们称之为mediawikiadmin@nginx

我创建了一个自签名 CA在数据库服务器上正确强化通信并将提到的数据库用户更改为REQUIRE X509。要使用 MediaWiki 进行设置,没有提供太多选项。事实上,官方提到的唯一自签名证书选择是使用 LocalSettings 中的 $wgDBservers 对象。很好。所以我的设置如下所示:

$wgDBservers = [
    [
        'host' => "mariadb",
        'dbname' => "mediawiki",
        'user' => "mediawiki",
        'password' => "pleasedontdothis",
        'type' => "mysql",
        'flags' => DBO_DEFAULT | DBO_SSL,
        'sslKeyPath' => "/path/to/nginx_private.key",
        'sslCertPath' => "/path/to/nginx.crt",
        'sslCAFile' => "/path/to/mariadb_ca.crt",
        'load' => 0,
    ]
];
$wgDBname = "mediawiki";
$wgDBprefix = "";
$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";

这是根据官方文档这里这里。请注意,您被迫保留数据库名称的重复配置条目。这在重要笔记在文档中。我个人将这些设置保存在 Web 根目录之外的包含文件中,这对于此问题而言无关紧要。

实际问题

更新
归根结底就是这样。就实际的 wiki 而言,上述设置运行得很好。事实上,我甚至可以从 CLI 运行。但事情开始让php ./maintenance/run.php update我很烦恼。

不是在这种状态下工作?

  • http(s)://media.wiki/mw-config..使用进行 GUI 更新$wgUpgradeKey

    会发生什么?
  • 该死的 mediawiki 软件试图使用默认用户设置连接数据库!
    Cannot access the database: :real_connect(): (HY000/1698): Access denied for user 'wikiuser'@'localhost'
    好吧,干杯,猜猜看,我的数据库在远程服务器上,我告诉过你。我还告诉你要与谁连接,以及如何在你的配置设置中进行连接。你实际上可以很好地运行 wiki...

您可能希望在此处使用来自的用户$wgDBservers...我怀疑某个地方存在权限问题,但我在 LocalSettings 中所做的更改确实反映在此步骤的错误输出中,因此我暂时排除了这种可能性。LocalSettings 只能由 Web 服务器(显然也是 root)读取。

现在让我们来更有趣一点。我添加了在官方文档

$wgDBadminuser = "mediawikiadmin";
$wgDBadminpassword = "idareyoutrythis";

此时一切都变得疯狂起来。我使用 CLI 手动测试了此用户与数据库的连接,使用了我设置的所有偏执安全措施,包括仅 TLSv1.3、X509 以及仅从这一个主机。数据库设置正常,此用户实际上可以连接。
发生了什么?

  • 现在 GUI 更新突然尝试连接'mediawikiadmin'@'localhost'??
  • 运行之前相同的 CLI 命令时,udpate 脚本现在突然在 ../includes/libs/rdbms/ServerInfo.php 的第 154 行引发错误:
    PHP Fatal error: Uncaught UnexpectedValueException: Duplicate server name "mediawikidb" in ...此问题已通过从设置中删除管理员用户得到解决!
  • 我可以强制 GUI 更新使用正确的远程服务器添加$wgDBserver (单数!)变量重新混合,导致配置重复!
    即使这样做,仍然出现 的访问被拒绝错误'mediawikiadmin'@'nginx',尽管这实际上是正确的用户,并且此数据库管理员用户可以从 MediaWiki 外部完美连接!
    请记住,所有这些都是在通常的数据库用户正常运行 Wiki 时发生的……

总结

有人有在职的MediaWiki 配置,包括更新,用适当的分离数据库, 使用TLS用于 SQL 客户端/服务器通信和设置 $wgDBadminuser?
我也可以删除管理员用户,但是使用此设置我也无法使其工作。(见上文,更新脚本默认为错误的用户设置)

相关内容