Docker环境下WordPress无法连接MySQL数据库求助(附配置代码)
WordPress容器无法连接MySQL的解决办法
核心问题修正
你的配置里有两个关键错误导致连接失败:
1. Docker Compose语法错误
MySQL服务的端口映射行缺少闭合引号,会导致Compose解析失败。
原错误代码:
- '3306:3306
修正后:
- '3306:3306'
2. WordPress数据库主机配置错误
在Docker容器环境中,localhost指向容器自身,而非MySQL容器。WordPress需要通过Docker Compose中定义的服务名mysql来访问数据库。
原错误配置:
define( 'DB_HOST', 'localhost' );
修正后:
define( 'DB_HOST', 'mysql' );
完整修正后的配置文件
Docker Compose文件(docker-compose.yml)
version: "3.9" services: web: ports: - "80:80" build: context: ./code # 可选:确保web容器在mysql启动后再启动 depends_on: - mysql mysql: image: mysql:5.7 restart: always environment: MYSQL_DATABASE: 'testdb' MYSQL_USER: 'user' MYSQL_PASSWORD: 'password' MYSQL_ROOT_PASSWORD: 'password' ports: - '3306:3306'
WordPress配置文件(wp-config.php)
define( 'DB_NAME', 'testdb' ); /** Database username */ define( 'DB_USER', 'user' ); /** Database password */ define( 'DB_PASSWORD', 'password' ); /** Database hostname */ define( 'DB_HOST', 'mysql' ); /** Database charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8' ); /** The database collate type. Don't change this if in doubt. */ define( 'DB_COLLATE', '' );
操作步骤
- 保存修正后的两个文件
- 清理现有容器(如果已启动过):
docker-compose down
- 重新启动服务:
docker-compose up -d --build
- 等待1-2分钟让MySQL完成初始化,再访问
http://localhost验证连接状态
排查补充
如果仍有问题,可通过日志定位原因:
# 查看WordPress容器日志 docker-compose logs web # 查看MySQL容器日志 docker-compose logs mysql
内容的提问来源于stack exchange,提问作者Haseeb Ch
相关产品推荐
相关产品推荐

