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

Podman无root容器部署WordPress数据库连接故障排查求助

排查思路与解决方案

1. 修正环境变量拼写错误(最优先)

你的WordPress启动命令中存在拼写错误:WORDPRESS_DB_PASWORD少了一个字母s,正确变量名应为WORDPRESS_DB_PASSWORD。这个错误会导致WordPress无法读取正确的数据库密码,直接引发连接失败。

修正后的WordPress启动命令:

podman run --detach --pod myblog \
-e WORDPRESS_DB_HOST=mywpdb:3306 \
-e WORDPRESS_DB_NAME=mywpdb \
-e WORDPRESS_DB_USER=mywpuser \
-e WORDPRESS_DB_PASSWORD=1234 \
--name mywp docker.io/library/wordpress:6.0

2. 验证Pod内网络连通性

同一Pod内的容器共享网络命名空间,需确认WordPress容器能正常访问数据库容器的3306端口:

  • 进入WordPress容器测试连通性:
    podman exec -it mywp ping mywpdb
    podman exec -it mywp nc -zv mywpdb 3306
    

如果ping不通或端口未开放,检查Pod的网络配置是否正常,或重启Pod:podman pod restart myblog

3. 调整数据库用户权限

从Mariadb日志的Access denied for user 'mywpuser'@'10.0.2.100'可以看出,数据库用户mywpuser仅允许localhost访问,而WordPress容器来自Pod内的其他IP段。需修改用户权限允许远程(Pod内)访问:

  • 进入数据库容器执行SQL:
    podman exec -it mywpdb mysql -uroot -p1234
    
    在MySQL/Mariadb命令行中执行:
    GRANT ALL PRIVILEGES ON mywpdb.* TO 'mywpuser'@'%' IDENTIFIED BY '1234';
    FLUSH PRIVILEGES;
    
    (%表示允许任意IP访问,测试环境适用,生产环境建议限制为Pod所在子网)

4. 确保数据库服务完全就绪

数据库容器启动后需要一定时间完成初始化,若WordPress启动过早会导致连接失败:

  • 先启动数据库容器,等待30秒后再启动WordPress容器;
  • 或给WordPress容器添加自动重启策略,让它在连接失败后重试:
    podman run --detach --pod myblog --restart on-failure:5 \
    # 其他环境变量...
    --name mywp docker.io/library/wordpress:6.0
    

5. 检查无root Podman的权限限制

Ubuntu 22.04的无root Podman可能受AppArmor/SELinux限制,导致容器间网络或文件访问异常:

  • 临时关闭AppArmor对Podman的限制测试:
    sudo aa-complain /usr/bin/podman
    
  • 若问题解决,可调整AppArmor规则或使用--security-opt apparmor=unconfined启动容器(仅测试环境使用)

6. 查看详细日志定位问题

  • 查看数据库容器初始化日志,确认数据库和用户是否创建成功:
    podman logs mywpdb
    
  • 查看WordPress容器日志,获取更详细的连接错误信息:
    podman logs mywp
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:45:39