You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何sudo用户执行MediaWiki维护脚本update.php时遭数据库访问拒绝?

解决MediaWiki update.php数据库访问被拒及Patroller扩展报错问题

核心问题分析

你遇到的Access denied for user 'user'@'localhost'是MySQL数据库层面的权限问题,和系统sudo权限无关——sudo仅提升系统用户权限,无法绕过MySQL的用户认证规则。Patroller扩展的报错是连锁反应:update.php未执行完成,扩展依赖的SQL表未创建,导致页面调用时触发查询错误。

分步解决方案

  • 第一步:核对LocalSettings.php的数据库配置
    打开/home/user/mediawiki/LocalSettings.php,确认以下参数与MySQL实际配置完全匹配:

    $wgDBuser = "user";          // 需为MySQL中已存在的用户
    $wgDBpassword = "your_db_password";  // 注意密码的大小写、特殊字符,确保无拼写错误
    $wgDBserver = "localhost";   // 若数据库不在本地,替换为对应IP/域名
    $wgDBname = "your_wiki_database";  // 确认是MediaWiki对应的数据库名
    
  • 第二步:验证MySQL用户的localhost访问权限
    在终端直接测试user@localhost能否登录数据库:

    mysql -u user -p -h localhost
    

    若登录失败,说明该用户无localhost访问权限,需执行授权操作:

    1. 使用MySQL管理员账号(如root)登录:
      mysql -u root -p
      
    2. 执行授权命令(替换your_wiki_database和your_db_password为实际值):
      GRANT ALL PRIVILEGES ON your_wiki_database.* TO 'user'@'localhost' IDENTIFIED BY 'your_db_password';
      FLUSH PRIVILEGES;
      
    3. 再次用user@localhost登录,确认能正常访问数据库后再继续。
  • 第三步:正确执行update.php
    切换到MediaWiki根目录运行更新命令,无需sudo(除非文件权限导致php无法读取配置):

    cd /home/user/mediawiki
    php update.php
    

    若确实存在文件权限问题,再用sudo执行,但需确保sudo后的用户(默认root)能读取LocalSettings.php。

  • 第四步:验证Patroller扩展功能
    等update.php执行完成后,刷新MediaWiki页面,点击“巡查编辑”确认不再弹出DBQueryError。也可登录MySQL查看是否生成了Patroller相关表(如patrol_log,具体以扩展定义为准)。

额外注意事项

  • 若修改过MySQL绑定地址(如设为0.0.0.0),需注意user@localhost和user@127.0.0.1的权限是独立的,可能需要同时授权两个主机的访问权限。
  • 查看MySQL错误日志(通常路径为/var/log/mysql/error.log),可获取更详细的权限拒绝原因。

内容的提问来源于stack exchange,提问作者Aris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:45:32