mysql - 不允许主机 'X' 连接到此 MySQL 服务器

标签 mysql docker docker-compose

我想部署 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_ROOT_HOST 没有帮助。当我尝试从 db-container 连接到 mysql 时:

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

我真的不知道要用这个魔法做什么……谢谢。

最佳答案

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

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

旋转新容器时:

docker run --name some-mysql -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

在撰写文件中它会是

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 quotes

关于mysql - 不允许主机 'X' 连接到此 MySQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54030469/

相关文章:

php - 如何将 MySQL 数组数据追加到预制 JSON 中?

docker - 如何在docker中调试odoo?

sockets - Docker在高负载下阻止传出连接?

R 包 - 为什么 tidyr 安装依赖项列表中未定义的依赖项?

php - 使用php将表单数据输入Mysql数据库

mysql - 最快和/或最简单的方法是什么?

php - Docker-为PHP + Nginx安装PDO驱动程序

node.js - Dockerize框架测试 "Failed to exec"

docker - Traefik https不完全安全

mysql - MYSQL如何建立索引?