如何从同一服务器上的WordPress容器访问运行在Docker中的数据库
故障原因与解决方案
核心问题排查
- 主机名配置错误:你当前在
wp-config.php中填写的DB_HOST为mysql:3306,但你的MySQL容器实际名称为my_mysql,Docker默认使用容器名称作为同网络下的域名解析地址,二者不匹配会导致连接失败。 - 网络连通性异常:你运行的MySQL容器没有配置端口映射(端口列仅显示容器内部端口,没有映射到宿主机端口),需要根据WordPress的运行环境(是否为Docker容器)配置网络规则。
- 数据库权限/存在性问题:需确认MySQL容器内已创建
wordpress数据库,且root用户配置了允许外部访问的权限。
分场景解决方案
场景1:WordPress也运行在Docker容器中
- 执行以下命令创建公共Docker网络(已创建可跳过):
docker network create wp-network - 将MySQL容器加入公共网络:
docker network connect wp-network my_mysql - 启动WordPress容器时添加参数
--network wp-network加入同一网络 - 修改
wp-config.php中DB_HOST配置为:define( 'DB_HOST', 'my_mysql:3306' );
场景2:WordPress直接运行在宿主机本地
- 重新启动MySQL容器,添加端口映射参数:
docker run -d --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你设置的root密码 mysql:5.7 - 修改
wp-config.php中DB_HOST配置为:define( 'DB_HOST', '127.0.0.1:3306' );
额外校验步骤
如果修改后仍报错,执行以下操作确认配置:
- 进入MySQL容器终端:
docker exec -it my_mysql mysql -uroot -p - 输入root密码进入MySQL命令行后,执行
show databases;确认返回结果包含wordpress库,不存在则执行create database wordpress;创建。 - 执行权限配置命令允许root远程访问:
grant all privileges on wordpress.* to 'root'@'%' identified by '你的root密码'; flush privileges;
内容的提问来源于stack exchange,提问作者Manu
相关产品推荐
相关产品推荐

