不允许主机“x”连接到此mysql服务器

uqzxnwby  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(357)

我想部署mysql+phpmyadmin。我的docker-compose.yml:

version: "3"
services:
  db:
    image: mysql:5.7
    restart: always
    container_name: db
    volumes:
      - ./~mysql:/var/lib/mysql
      - ./mysql.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      MYSQL_DATABASE: "dbtest"
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_ROOT_HOST: "%"
    networks:
      - db
    command: --default-authentication-plugin=mysql_native_password
    healthcheck:
      test: "mysqladmin ping -h localhost"
      interval: 1s
      timeout: 1s
      retries: 60

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.7
    restart: always
    container_name: phpmyadmin
    ports:
      - 8080:80
    networks:
      - external-net
      - db
    environment:
      PMA_HOST: db
    depends_on:
      - db

networks:
  external-net:
    external:
      name: external-net
  db:
    driver: bridge

过了一段时间,我犯了主题错误。mysql\u root\u host没有帮助。当我尝试从db容器连接到mysql时:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我真的不知道怎么处理这个魔法。。。谢谢。

xghobddn

xghobddn1#

在docker的genetal设置中,启用不带tls的守护程序。我认为这很管用。
docker图像

zaq34kh6

zaq34kh62#

我重新创建了您的设置,只是添加了一些env配置来实现这一点,我删除了volumes部分,因为它没有问题:
docker-compose.yml公司

version: "3"
services:
  db:
    image: mysql:5.7
    restart: always
    container_name: db
    environment:
      - MYSQL_ROOT_PASSWORD=rootpasswd
      - MYSQL_DATABASE=phpmyadmin
      - MYSQL_USER=user
      - MYSQL_PASSWORD=userpasswd
    networks:
      - db
    command: --default-authentication-plugin=mysql_native_password
    healthcheck:
      test: "mysqladmin ping -h localhost"
      interval: 1s
      timeout: 1s
      retries: 60

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.7
    restart: always
    container_name: phpmyadmin
    ports:
      - 8080:80
    networks:
      - external-net
      - db
    environment:
      PMA_HOST: db
    depends_on:
      - db

networks:
  external-net:
    external:
      name: external-net
  db:
    driver: bridge

使用访问phpmyadminroot:rootpasswd works 好的。

f45qwnt8

f45qwnt83#

如果本地系统上的文件是以损坏的方式创建的,或者docker守护程序无法正确访问,则可能会发生此问题。这可能是由于以下原因:
docker缺少对本地硬盘的访问权限,例如在windows上。 C .
在构建容器时,docker没有访问本地硬盘驱动器的权限。即使docker第一次问 --build 允许访问的进程 C 在windows上,这些文件可能仍然损坏。
解决方法是在docker被授予访问权限后删除相应的本地文件,在您的情况下,这些文件是 /~mysql 文件呢 mysql.cnf .

相关问题