首页 > 解决方案 > 在本地 docker 容器上连接 MySQL 时出错:ERROR 2002 (HY000): Can't connect to MySQL server on '127.0.0.1' (115)

问题描述

我尝试连接到 MySQL 数据库,该数据库在我的本地 docker 上作为 docker 服务(从 mysql:5.7 映像创建)运行。当我尝试:

mysql -u myuser -p mydb -h 127.0.0.1

我收到以下错误:ERROR 2002 (HY000): Can't connect to MySQL server on '127.0.0.1' (115) 我的 MySQL 服务的 docker 设置如下:

networks:
  front-tier:
    name: front-tier
    attachable: true
    ipam:
      config:
      - subnet: 70.28.0.0/16
  back-tier:
    name: back-tier
    attachable: true

services:
  mysql:
    image: mysql
    hostname: mysql
    deploy:
      restart_policy:
        condition: on-failure
    placement:
    replicas: 1
  labels:
    com.dgyar.description: "Data node"
    com.dgyar.department: "IT"
  command: --sql_mode=""
  environment:
    MYSQL_ROOT_PASSWORD: ******
    MYSQL_DATABASE: mydb
    MYSQL_USER: myuser
    MYSQL_PASSWORD: ******
    MYSQL_ROOT_HOST: '%'
  networks:
    - back-tier
  volumes:
    - "/mnt/mysql:/var/lib/mysql"

标签: mysqldocker

解决方案


您需要将 MySQL 容器中的一个端口映射到您的主机上,以便从您的命令中访问它。

例如

networks:
  front-tier:
    name: front-tier
    attachable: true
    ipam:
      config:
      - subnet: 70.28.0.0/16
  back-tier:
    name: back-tier
    attachable: true

services:
  mysql:
    image: mysql
    hostname: mysql
    deploy:
      restart_policy:
        condition: on-failure
    placement:
    replicas: 1
  labels:
    com.dgyar.description: "Data node"
    com.dgyar.department: "IT"
  command: --sql_mode=""
  environment:
    MYSQL_ROOT_PASSWORD: ******
    MYSQL_DATABASE: mydb
    MYSQL_USER: myuser
    MYSQL_PASSWORD: ******
    MYSQL_ROOT_HOST: '%'
  networks:
    - back-tier
  volumes:
    - "/mnt/mysql:/var/lib/mysql"
  ports:
    - "5000:3306"
mysql -u myuser -p mydb -h 127.0.0.1 -P 5000

推荐阅读