docker phppyadmin 容器拒绝用户“root”访问

Mad*_*era 1 mysql phpmyadmin docker

我已经在digitalocean droplet上成功安装了docker,下面显示了我的 docker-compose.yml配置:

version: '2.1'
services:

  mysql:
    build:
      context: ./docker/mysql
    image: mysql:latest
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: root_pass
      MYSQL_USER: root
      MYSQL_PASSWORD: root_pass
    volumes:
      - mysqldata:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    links:
      - mysql:db
    environment: 
      MYSQL_USERNAME: root
      MYSQL_ROOT_PASSWORD: root_pass
    restart: always
    ports: 
      - 8080:80
Run Code Online (Sandbox Code Playgroud)

一旦我启动了 docker 服务,一切正常,如下面的屏幕截图所示。 在此处输入图片说明

我可以使用我的用户凭据在终端内完美地访问我的 mysql 数据库。

在此处输入图片说明

但问题是当我尝试访问 phpmyadmin 时droplet_ip:8080说:

 #1045 - Access denied for user 'root'@'172.18.0.4' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

在这里我也使用了相同的用户名(root)密码(root_pass)。

任何有关此问题的建议将不胜感激。谢谢你。

lvt*_*llo 7

以下对我有用

version: '3.1'
volumes:
  mysql-volume:

services:
  mysql:
    image: mysql
    container_name: mysql
    volumes:
     - mysql-volume:/var/lib/mysql
    environment:
     MYSQL_ROOT_PASSWORD: rootpass
     MYSQL_DATABASE: db
     MYSQL_USER: user
     MYSQL_PASSWORD: supersecret

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
      PMA_HOST: mysql
      MYSQL_USER: user
      MYSQL_PASSWORD: supersecret
    ports:
      - 80:80
    depends_on:
      - mysql
Run Code Online (Sandbox Code Playgroud)

不要混淆 root 用户和 MySQL 用户。在上面的示例中,我使用 MySQL 用户通过 phpadmin 登录。如果你想使用你的 root 用户登录,你不必指定 MySQL 用户,它看起来像这样(你不需要为 phpmyadmin 指定一个用户,因为它总是 root):

version: '3.1'
volumes:
  mysql-volume:

services:
  mysql:
    image: mysql
    container_name: mysql
    volumes:
     - mysql-volume:/var/lib/mysql
    environment:
     MYSQL_ROOT_PASSWORD: rootpass
     MYSQL_DATABASE: db

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: rootpass
    ports:
      - 80:80
    depends_on:
      - mysql
Run Code Online (Sandbox Code Playgroud)

同样非常重要的是,当您想要重新创建整个设置时,请删除您的 mysql 卷。( docker volume rm ..). 因为可能你的mysql在进行更改后再次以相同的卷启动。