【发布时间】:2019-12-13 18:38:04
【问题描述】:
我有一个已经在运行的 MySQL 容器,可用于其他几个容器。
现在我正在尝试将一个 wordpress 容器连接到它,但我得到了:
建立数据库连接时出错
而wp容器日志显示:
MySQL 连接错误:(1045) 用户 'my_user'@'172.20.0.5' 的访问被拒绝(使用密码:YES)
mysql容器已经启动并运行,容器名称为mysql,我使用一个PHPMyAdmin容器来管理它;我可以这样做(它已连接到 Mysql 服务器容器)。
这是我的 WP 容器的 docker compose 代码:
version: '2'
services:
wordpress:
image: wordpress:latest
restart: unless-stopped
ports:
- 80
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: "my_user"
WORDPRESS_DB_PASSWORD: "12345"
WORDPRESS_DB_NAME: "my_user"
volumes:
- /f/Sites/mia:/var/www/html
networks:
- occms
- ocdb
networks:
occms:
external:
name: oly-cms
ocdb:
external:
name: oly-db
注意事项:
- 我的数据库名称和它的用户名相同:
my_user - 我已经预先创建了 mysql 用户
my_user,并赋予它对my_user数据库的完全权限。 (请注意,实际用户和数据库以“g”开头;我已将它们更改为“my_user”以保护本问题的隐私。)
- 我已经将一堆数据预先导入到数据库中(用于调试当前正在生产的网站,使用 sql 备份)。
- 启动 wp 容器后,我手动将生产中的所有 wp 文件复制到具有相同相应文件的 wp 容器文件夹中,并覆盖它们。
- 当我编辑
WORDPRESS_DB_HOST:变量并重新启动 wp 容器时,我确实看到它的值反映在wp-config.php文件中。 - 在
wp-config.php中,我已确保凭据匹配:
define('DB_NAME', 'my_user');
/** MySQL database username */
define('DB_USER', 'my_user');
/** MySQL database password. Changed on: 3/20/2014 2:40 PM */
define('DB_PASSWORD', '12345');
/** MySQL hostname */
define('DB_HOST', 'mysql');
我的假设是,只要我在同一个 docker 网络中同时拥有 mysql 和 wp 容器,它们应该能够相互连接吗?我在 WP 撰写代码中遗漏了什么吗?
【问题讨论】:
-
是什么类型的网络?
-
@alex067 它们都是预先存在的桥梁。
-
如果您尝试改用数据库的容器 IP 地址和端口会怎样?
-
@alex067 它似乎能够“连接”到容器,并显示错误
MySQL Connection Error: (1045) Access denied for user 'my_user'@'172.20.0.5' (using password: YES。只是似乎无法与该用户或其他东西连接到实际的数据库。 -
从截图来看,用户好像绑定了
localhost,我觉得应该是user'@'%'
标签: mysql wordpress docker docker-compose containers