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

容器化部署WordPress无法连接MariaDB 报1045错误如何排查

问题排查步骤

按优先级从高到低逐一验证,每一步验证通过再走下一项:

  • 第一步:先排除配置传递错误,不要信任编排文件、宿主机上存的配置值,直接进WordPress容器内部核对实际生效的配置:
    1. 打开WordPress根目录下的wp-config.php,逐字核对DB_USER、DB_PASSWORD、DB_HOST、DB_PORT四个参数的值,注意检查有没有多余的空格、换行,密码里如果包含$、#、引号、反斜杠这类特殊字符,要确认没有被yaml、docker命令行、shell脚本转义截断。
    2. 在WordPress容器内安装mysql客户端,直接用wp-config.php里写的明文参数手动连接数据库,跳过WordPress的逻辑验证:
      # 替换尖括号里的内容为wp-config.php中读取到的实际值
      mysql -h <DB_HOST值> -P <DB_PORT值,默认3306> -u <DB_USER值> -p<DB_PASSWORD值>
      
      如果这一步连接失败,问题和WordPress无关,就是账号密码/网络/数据库监听的问题。
  • 第二步:修复MariaDB的用户授权匹配问题
    你在MariaDB容器内本地能登录成功,不代表远程TCP连接能正常授权:本地不带-h参数执行mysql命令时,默认走Unix Socket连接,匹配localhost的本地访问规则;跨容器访问走TCP协议,会按IP段匹配用户表的Host规则,两者完全独立。
    1. 进MariaDB容器执行以下命令,检查用户实际授权和认证信息:
      -- 查看mywpuser的授权
      SHOW GRANTS FOR 'mywpuser'@'%';
      -- 查看所有用户的Host、认证串,排查有没有优先级更高的匹配条目
      SELECT user, host, authentication_string FROM mysql.user;
      
      MariaDB的用户匹配规则是Host配置越具体优先级越高,如果存在mywpuser@192.168.64.%、甚至空用户名的匿名用户@192.168.64.3这类条目,会优先于你配置的mywpuser@%条目生效,直接导致密码校验失败。
    2. 确认授权异常后,直接重新配置用户并刷新权限:
      -- 替换密码为你实际要使用的明文密码
      ALTER USER 'mywpuser'@'%' IDENTIFIED BY '你的数据库密码';
      -- 给用户分配WordPress需要的库权限,替换wordpress为你实际的库名
      GRANT ALL PRIVILEGES ON wordpress.* TO 'mywpuser'@'%';
      FLUSH PRIVILEGES;
      
  • 第三步:验证端口连通性和数据库监听配置
    ping通只能证明ICMP协议可达,不代表数据库服务端口能正常访问:
    1. 在WordPress容器内用端口扫描工具验证3306端口连通性:
      # 替换为数据库容器的实际IP
      nc -zv 192.168.64.x 3306
      
    2. 进MariaDB容器检查数据库配置的监听地址,确认bind-address参数值为0.0.0.0,如果配置为127.0.0.1会拒绝所有跨容器的TCP连接请求。
  • 第四步:排查特殊编码问题
    如果密码包含非ASCII字符、全角符号,要确认wp-config.php文件的编码和数据库存储的密码编码一致,避免因为编码不一致导致密码哈希校验失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:48:41