首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不允许主机'X‘连接到此MySQL服务器

不允许主机'X‘连接到此MySQL服务器
EN

Stack Overflow用户
提问于 2019-01-04 06:09:32
回答 5查看 14.8K关注 0票数 5

我想部署MySQL+PHPMyAdmin。我的docker-compose.yml:

代码语言:javascript
复制
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_ROOT_HOST帮不上忙。当我尝试从db-container连接mysql时:

代码语言:javascript
复制
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

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

EN

回答 5

Stack Overflow用户

发布于 2020-04-26 16:15:12

如果本地系统上的文件是以损坏的方式创建的,或者Docker守护程序无法正确访问,则可能会出现此问题。这可能是由于以下原因:

Windows没有本地硬盘的访问权限,在C.

  • While等构建容器的上,
  • 没有访问本地硬盘的权限。即使Docker在第一个--build过程中请求允许访问Windows上的C,这些文件仍然可能已损坏。

解决方案可能是在授予Docker访问权限后删除相应的本地文件,在您的情况下,这些文件是/~mysql中的文件和文件mysql.cnf

票数 3
EN

Stack Overflow用户

发布于 2019-02-08 03:36:00

我已经重新创建了你的设置,只是添加了一些ENV配置来完成这个技巧,我已经删除了volumes部分,因为它没有问题:

docker-compose.yml

代码语言:javascript
复制
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

用根访问PHPMyadmin :rootpasswd运行良好。

票数 2
EN

Stack Overflow用户

发布于 2022-02-10 15:55:50

在启动MySQL容器MYSQL_ROOT_HOST=时,您可以传递一个额外的环境变量,这将创建一个根用户,该用户具有从给定IP地址登录的权限。如果您想要允许从任何IP登录,您可以指定MYSQL_ROOT_HOST=%。

这将仅适用于新创建的容器。

旋转新容器时:

代码语言:javascript
复制
docker run --name some-mysql -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

在compose文件中,它将是

代码语言:javascript
复制
version: '2'
services:

  ### Mysql container
  mysql:
    image: mysql:latest
    ports:
      - "3306:3306"
    volumes:
      - /var/lib/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test_db
      MYSQL_USER: test
      MYSQL_PASSWORD: test_pass
      MYSQL_ROOT_HOST: '%'  # needs to be enclosed with quotesversion: '2'
services:

  ### Mysql container
  mysql:
    image: mysql:latest
    ports:
      - "3306:3306"
    volumes:
      - /var/lib/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test_db
      MYSQL_USER: test
      MYSQL_PASSWORD: test_pass
      MYSQL_ROOT_HOST: '%'  # needs to be enclosed with quotes
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54030469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档