![](/img/trans.png)
[英]connecting to a docker-compose mysql container denies access but docker running same image does not
[英]docker-compose mysql container denies access to wordpress container
我遇到 mysql 5.7 容器拒绝访问 wordpress 容器的问题。 我正在使用 docker-compose 并且在 Mac OSX 上运行 docker。 Docker 应该是可用的最新版本。
这是我的 docker-compose.yml
version: '2'
services:
wordpress:
depends_on:
- db
image: wordpress:latest
container_name: wordpress
ports:
- "8000:80"
- "443:443"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: blog
WORDPRESS_DB_USER: blog_admin
WORDPRESS_DB_PASSWORD: userpasswd
networks:
- wordpress_net
db:
image: mysql:5.7
container_name: db
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpasswd
MYSQL_DATABASE: blog
MYSQL_USER: blog_admin
MYSQL_PASSWORD: userpasswd
networks:
- wordpress_net
networks:
wordpress_net:
volumes:
db_data:
来自数据库容器的日志是:
2017-05-12T23:28:06.138429Z 321 [Note] Access denied for user 'blog_admin'@'172.19.0.3' (using password: YES)
来自 wordpress 容器的日志是:
MySQL Connection Error: (1045) Access denied for user 'blog_admin'@'172.19.0.3' (using password: YES)
Warning: mysqli::mysqli(): (HY000/1045): Access denied for user 'blog_admin'@'172.19.0.3' (using password: YES) in - on line 22
docker ps:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b02f0146fe7 wordpress:latest "docker-entrypoint..." 25 minutes ago Up 26 seconds 0.0.0.0:443->443/tcp, 0.0.0.0:8000->80/tcp wordpress
5d932ed6c269 mysql:5.7 "docker-entrypoint..." 25 minutes ago Up 25 minutes 0.0.0.0:3306->3306/tcp db
我试过什么:
WORDPRESS_DB_HOST, WORDPRESS_DB_USER
中使用根凭据当我连接到数据库容器时,我可以看到数据库的所有环境变量。 Wordpress 容器不断自行重启。 我在堆栈溢出上看到了一个建议刷新权限和设置新用户帐户的答案,但我想知道我是否做错了什么可能导致此问题再次出现在其他机器上。
改变:
WORDPRESS_DB_USER: blog_admin
WORDPRESS_DB_PASSWORD: userpasswd
到:
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: rootpasswd
进而:
docker-compose up -d --build
您的用户名Blog_admin
无权create database
。
我做了什么:
docker-compose rm -v
对我不起作用,因为我一直使用docker-compose down
来关闭容器。 我认为这是问题的根源。
docker-compose.yml
删除了该文件夹并创建了一个新文件夹。mysql
容器配置的 compose 文件,启动它并尝试以root
身份连接到mysql
服务器。docker stop containerID
。docker-compose rm -v
(出于某种原因, rm -v
仅在您停止容器时才起作用。当您使用docker-compose down
这会导致 db 的状态持续存在,因为我为 db 容器使用了一个卷)并使用 wordpress 容器配置完成 yml 文件。我已经结束了这样的事情:
version: '2'
services:
wordpress:
image: wordpress:latest
container_name: wordpress-blog
depends_on:
- mysql
ports:
- "8000:80"
- "443:443"
restart: always
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: admin
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
mysql:
image: mysql:5.7
container_name: mysql-db
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: admin
MYSQL_PASSWORD: password
注意:我以前不仅从 wordpress 容器连接到数据库,而且从 db 容器本身也有问题。 我上面描述的方法帮助我解决了这个问题。
简单的解决方案更改
volumes:
- db_data:/var/lib/mysql
到类似的东西
volumes:
- db_data:/var/lib/mysqlx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.