mysql - 在本地 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"
解决方案
您需要将 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
推荐阅读
- php - 使 HTML 消息消失
- cuda - CUDA 中的分段错误
- single-sign-on - Keycloak 无效的重定向 URL - grafana
- react-native - 如何根据 Tab Navigator 更改 Drawer Navigator 的 headerStyle
- nuxt.js - 如何在 nuxt js 中从strapi 农场/解析降价帖子
- python - 如何在 python2 中递归使用 glob.glob() 和 glob.iglob()
- typescript - Prisma:我怎样才能让所有孩子都处于某种状态?
- javascript - 对象在浏览器上的最大尺寸是多少?(铬合金)
- javascript - Firebase 期望 collection() 的第一个参数是 CollectionReference、DocumentReference 或 FirebaseFirestore
- python - 循环设置和排序函数