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

时间:2017-05-12 23:42:51

标签: mysql wordpress docker docker-compose

我有一个问题,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 host。
  2. docker-compose rm -v然后docker-compose up -d again。
  3. 使用wordpress容器之外的那些用户凭据和根凭据登录。
  4. 删除泊坞窗图像并从头开始再次拉动它们。
  5. WORDPRESS_DB_HOST, WORDPRESS_DB_USER
  6. 中使用root凭据

    当我连接到db容器时,我可以看到db的所有env变量。 Wordpress容器不断重启自己。我看到堆栈溢出的一个答案,建议刷新权限和设置新用户帐户,但我想知道我是否做错了可能导致此问题再次出现在其他机器上。

2 个答案:

答案 0 :(得分:1)

更改

ActionListener

WORDPRESS_DB_USER: blog_admin WORDPRESS_DB_PASSWORD: userpasswd

然后

WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: rootpasswd

您的用户名Blog_admin无权访问create database

答案 1 :(得分:1)

我做了什么:

docker-compose rm -v对我不起作用,因为我总是使用docker-compose down来关闭容器。我认为这是问题的根源。我用docker-compose.yml删除了文件夹并创建了一个新文件夹。然后我创建了compose文件,只需配置mysql容器启动它,并尝试以root身份连接到mysql服务器。它工作,然后我不得不用docker stop containerID停止容器,然后我运行docker-compose rm -v(由于某种原因,rm -v仅在您停止容器时有效。不是在您使用{{ 1}这导致db状态持续存在,因为我使用了db容器的容量)并使用wordpress容器配置完成了yml文件我最终得到了这样的结果:

docker-compose down

注意:我之前遇到的问题不仅是从wordpress容器连接到数据库,还有自己的db容器。我上面描述的方法帮助我解决了这个问题。