繁体   English   中英

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

[英]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

我试过什么:

  1. 正在重启 docker 主机。
  2. docker-compose rm -v 然后 docker-compose up -d 再次。
  3. 使用 wordpress 容器之外的用户凭据和根凭据登录。
  4. 删除 docker 个图像并从头开始重新拉取它们。
  5. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM