Docker Compose部署WordPress遭遇数据库连接错误求助
排查WordPress数据库连接错误的解决方案
1. 修复MySQL用户权限问题
你的配置中直接使用root作为WordPress的数据库用户,但MySQL默认的root账号仅允许**容器内部(localhost)**登录,WordPress容器处于独立网络节点,无法通过root远程连接数据库。
修正步骤:
- 更新
.env文件,创建专用的WordPress数据库用户:
MYSQL_ROOT_PASSWORD=root MYSQL_USER=wp_user MYSQL_PASSWORD=wp_pass
- 调整
docker-compose.yaml中db服务的环境变量引用,确保变量匹配正确:
environment: - MYSQL_DATABASE=wordpress - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD}
新创建的wp_user默认拥有%(任意主机)访问权限,允许跨容器连接。
2. 验证容器间网络连通性
进入WordPress容器,测试与MySQL容器的3306端口连通性:
# 进入wordpress容器 docker exec -it wordpress sh # 安装网络测试工具(Alpine镜像默认无nc) apk add netcat-openbsd # 测试端口连通 nc -zv db 3306
若输出db (172.x.x.x:3306) open,说明网络正常;若失败,可重启docker网络或检查app-network配置(bridge模式默认无问题)。
3. 查看MySQL容器日志排查初始化异常
通过日志确认数据库和用户是否正确创建:
docker logs db
如果日志出现Access denied for user或Database not created类错误,需清理旧数据卷后重新构建容器(注意:会清空现有数据库数据):
# 停止并移除容器 docker-compose down # 删除数据库数据卷 docker volume rm $(docker volume ls | grep your_project_name_dbdata | awk '{print $2}') # 重新启动服务 docker-compose up -d
4. 检查WordPress自动生成的配置文件
官方WordPress镜像会根据环境变量生成wp-config.php,可进入容器验证配置参数:
docker exec -it wordpress cat /var/www/html/wp-config.php
确认以下参数与你的配置完全一致:
define( 'DB_HOST', 'db:3306' ); define( 'DB_NAME', 'wordpress' ); define( 'DB_USER', 'wp_user' ); // 对应.env中设置的用户名 define( 'DB_PASSWORD', 'wp_pass' ); // 对应.env中设置的密码
内容的提问来源于stack exchange,提问作者Docker novice
相关产品推荐
相关产品推荐

