WordPress Docker容器无法连接MySQL数据库问题咨询
Docker部署WordPress数据库连接问题排查解决方案
核心错误修正
你当前的启动命令存在3处关键配置错误,首先按如下要求修正:
- 变量命名错误:WordPress官方镜像的数据库配置变量前缀为
WORDPRESS_DB_,你使用的MYSQL_前缀变量无法被WordPress识别 - 数据库地址配置错误:同Docker网络内的容器通信使用内部服务端口,MySQL容器内部端口为3306,不需要使用宿主机映射的90端口,且数据库地址对应的变量为
WORDPRESS_DB_HOST,你使用的WORDPRESS_HOST为无效变量 - 冗余配置:已指定自定义网络的情况下,
--link db参数不需要额外配置
修正后启动步骤
先删除原有错误启动的容器:
docker rm -f db wp-site1
重新启动MySQL容器(原MySQL启动命令无错误,可保留,若后续遇到认证插件问题可添加参数-e MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password):
docker run --name db \ -p 90:3306 \ --restart=always \ --network wp-mysql-network \ -e MYSQL_ROOT_PASSWORD=root \ -e MYSQL_DATABASE=wordpress \ -e MYSQL_USER=wpuser \ -e MYSQL_PASSWORD=P@ssw0rd \ -v mysql-demo3:/var/lib/mysql \ -d mysql:latest
等待10秒左右待MySQL初始化完成,启动修正配置后的WordPress容器:
docker run --name wp-site1 \ -d \ -p 85:80 \ --network wp-mysql-network \ -e WORDPRESS_DB_HOST=db:3306 \ -e WORDPRESS_DB_NAME=wordpress \ -e WORDPRESS_DB_USER=wpuser \ -e WORDPRESS_DB_PASSWORD=P@ssw0rd \ -v wp-data-demo3:/var/www/html \ wordpress:latest
后续异常排查步骤
如果修正配置后仍无法连接数据库,按如下顺序排查:
- 检查容器运行状态:执行
docker ps确认两个容器状态均为Up,若有容器异常退出,查看对应日志定位错误:
查看MySQL日志:docker logs db
查看WordPress日志:docker logs wp-site1 - 验证网络连通性:执行
docker exec -it wp-site1 ping db,若无法ping通,检查自定义网络是否存在,执行docker network ls确认有wp-mysql-network,若不存在先执行docker network create wp-mysql-network创建网络 - 验证数据库账号有效性:执行
docker exec -it db mysql -u wpuser -pP@ssw0rd wordpress,若无法正常登录,说明数据库初始化异常,可删除旧存储卷重新初始化:docker volume rm mysql-demo3 wp-data-demo3(操作会清空所有已存数据) - 认证插件兼容问题:若日志提示
caching_sha2_password相关报错,在MySQL启动命令中添加-e MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password参数,删除旧存储卷后重新启动容器即可。
内容的提问来源于stack exchange,提问作者vivekchopra91
相关产品推荐
相关产品推荐

