docker-compose mysql容器拒绝访问wordpress容器

我有一个问题与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: 

来自db容器的日志是:

 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 

我试过了什么:

  1. 重新启动docker主机。
  2. docker-compose rm -v,然后docker-再次构build-d。
  3. 在wordpress容器外使用这些用户证书和根证书login。
  4. 删除docker图像,并从头开始再次拉他们。
  5. WORDPRESS_DB_HOST, WORDPRESS_DB_USER使用根凭证

当我连接到db容器时,我可以看到db的所有env vars。 WordPress的容器不断重新启动自我。 我看到堆栈溢出的一个答案,build议刷新特权和设置新的用户帐户,但我想知道如果我做错了什么,可能会导致此问题再次出现在其他机器上。

更改

WORDPRESS_DB_USER: blog_admin WORDPRESS_DB_PASSWORD: userpasswd

WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORD: rootpasswd

接着

 docker-compose up -d --build 

您的用户名Blog_admin无法访问创build数据库

我做了什么:

docker-compose rm -v没有为我工作,因为我总是用docker-compose downclosures容器。 我认为这是问题的根源。 我已经用我的docker-compose.yml删除了文件夹并创build了一个新文件夹。 然后我创build了configuration文件,只是configuration为mysql容器启动它,并尝试以root身份连接到mysql服务器。 它的工作,然后我不得不停止与docker stop containerID ,然后我已经运行docker-compose rm -v (出于某种原因rm -v只有当你停止容器时才起作用,而不是当你使用docker-compose down导致数据库状态坚持,因为我用数据库容器卷),并完成与wordpress容器configurationyml文件我已经结束了这样的事情:

 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容器它自己。 我上面描述的方法帮助我解决了这个问题。