本地mysql容器3307启动成功但无法正常连接

问题描述:
1、mysql 的docker容器情况说明:
1.1mysql的docker容器修改手册中的3306端口为3307,启动成功,状态up
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81b7dc4c7776 registry.cn-shanghai.aliyuncs.com/choerodon/iam-service:0.5.0 “/bin/sh -c 'exec ja…” 4 days ago Up 4 days 0.0.0.0:8030->8030/tcp iam-service
f4e194ef151b registry.cn-hangzhou.aliyuncs.com/choerodon-tools/mysql:5.7.17 “docker-entrypoint.s…” 4 days ago Up 4 days 3306/tcp, 0.0.0.0:3307->3307/tcp mysql
48f99aaf4238 registry.cn-shanghai.aliyuncs.com/choerodon/api-gateway:0.5.0 “/bin/sh -c 'exec ja…” 4 days ago Up 4 days 0.0.0.0:8080->8080/tcp api-gateway
157d2a1f6d2c registry.cn-shanghai.aliyuncs.com/choerodon/eureka-server:0.5.0 “/bin/sh -c 'exec ja…” 4 days ago Up 4 days 0.0.0.0:8000->8000/tcp eureka-server
8dc53b6c0803 registry.cn-hangzhou.aliyuncs.com/choerodon-tools/kafka:1.0.0 “sh -c '/opt/kafka/b…” 4 days ago Up 4 days 0.0.0.0:9092->9092/tcp kafka-0
f20c29c116f8 registry.cn-hangzhou.aliyuncs.com/choerodon-tools/zookeeper:3.4.10 “/opt/zookeeper/entr…” 4 days ago Up 4 days 0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp zookeeper-0
80e6f7be3b7f registry.saas.hand-china.com/tools/phpmyadmin “/run.sh phpmyadmin” 4 days ago Up 4 days 0.0.0.0:8888->80/tcp phpadmin

w
1.2已启动正常的docker容器ip查看
docker inspect -f ‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ f4e194ef151b
172.18.0.7
1.3容器ip及端口查看
“NetworkMode”: “choerodon_default”,
“PortBindings”: {
“3307/tcp”: [
{
“HostIp”: “”,
“HostPort”: “3307”
}
]
},

“Labels”: {
“com.docker.compose.config-hash”: “8741ebc838e58a678fd6b6bcd19ebd7b2aa6a2f50f12cd56d1f14de39d792fc8”,
“com.docker.compose.container-number”: “1”,
“com.docker.compose.oneoff”: “False”,
“com.docker.compose.project”: “choerodon”,
“com.docker.compose.service”: “mysql”,
“com.docker.compose.version”: “1.20.1”
}
},
“Ports”: {
“3306/tcp”: null,
“3307/tcp”: [
{
“HostIp”: “0.0.0.0”,
“HostPort”: “3307”
}
]
},
“SandboxKey”: “/var/run/docker/netns/50a4bc34ab4e”,
“SecondaryIPAddresses”: null,
“SecondaryIPv6Addresses”: null,
“EndpointID”: “”,
“Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“IPAddress”: “”,
“IPPrefixLen”: 0,
“IPv6Gateway”: “”,
“MacAddress”: “”,
“Networks”: {
“choerodon_default”: {
“IPAMConfig”: null,
“Links”: null,
“Aliases”: [
“mysql”,
“f4e194ef151b”
],
“NetworkID”: “e3801204140b8a9e431892f6e1faa9dec2cc8d4be0705ebd58e2091997455aa8”,
“EndpointID”: “425011bb5f15be9f4ffc7b7a41c547b940623c28fa6d30641a58bdee99ad2b0f”,
“Gateway”: “172.18.0.1”,
“IPAddress”: “172.18.0.7”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “02:42:ac:12:00:07”,
“DriverOpts”: null
}
}
}
}
2、连接报错信息:
2.1通过127.0.01端口3307连接
报错:unknown mysql serverhost 127.0.0.1(11001)
2.2通过localhost端口3307连接
报错:lost conectioconnection to mysql server at,system error 34
2.3通过localhost端口3306连接
报错:access denied for user choerodon @ localhost (using password :YES)
2.4通过localhost端口3306连接
报错:access denied for user choerodon @ localhost (using password :YES)
2.5通过172.18.0.7端口3306连接
报错:cannot connect to mysql server on 172.18.0.7
2.5通过172.18.0.7端口3307连接
报错:cannot connect to mysql server on 172.18.0.7
预期结果:
mysql成功连接

麻烦把docker-compose的文件内容贴一下

# docker-compose.yaml
version: “3”
services:
zookeeper-0:
container_name: zookeeper-0
image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/zookeeper:3.4.10
hostname: zookeeper-0
environment:
- ZK_REPLICAS=1
- ZK_HEAP_SIZE=2G
- ZK_TICK_TIME=2000
- ZK_INIT_LIMIT=10
- ZK_SYNC_LIMIT=5
- ZK_MAX_CLIENT_CNXNS=60
- ZK_SNAP_RETAIN_COUNT=3
- ZK_PURGE_INTERVAL=1
- ZK_LOG_LEVEL=INFO
- ZK_CLIENT_PORT=2181
- ZK_SERVER_PORT=2888
- ZK_ELECTION_PORT=3888
ports:
- “2181:2181”
- “2888:2888”
- “3888:3888”
command:
- sh
- -c
- zkGenConfig.sh && exec zkServer.sh start-foreground
volumes:
- “./kafka/zk:/var/lib/zookeeper”
kafka-0:
container_name: kafka-0
image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/kafka:1.0.0
hostname: 127.0.0.1
depends_on:
- zookeeper-0
links:
- zookeeper-0
ports:
- “9092:9092”
command:
- sh
- -c
- "/opt/kafka/bin/kafka-server-start.sh config/server.properties
--override zookeeper.connect=zookeeper-0:2181
--override log.dirs=/opt/kafka/data/logs
--override broker.id=0 "
volumes:
- “./kafka/kafka:/opt/kafka/data”
mysql:
container_name: mysql
hostname: mysql
image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/mysql:5.7.17
ports:
- “3307:3307”
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- C:\Users\wenjiandong\Desktop\choerodon\mysql\mysql_data:/var/lib/mysql
- C:\Users\wenjiandong\Desktop\choerodon\mysql\mysql_db.cnf:/etc/mysql/conf.d/mysql_db.cnf
expose:
- “3307”
phpadmin:
container_name: phpadmin
image: registry.saas.hand-china.com/tools/phpmyadmin
ports:
- “8888:80” # 80 port for explore view
environment:
PMA_ARBITRARY: 1 # for phpadmin settings
eureka-server:
container_name: eureka-server
hostname: eureka-server
image: registry.cn-shanghai.aliyuncs.com/choerodon/eureka-server:0.5.0
ports:
- “8000:8000”
links:
- kafka-0
environment:
- spring.kafka.bootstrap-servers=kafka-0:9092
- eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8000/eureka/
- eureka.client.register-with-eureka=false
- eureka.client.fetch-registry=false
- hystrix.stream.queue.enabled=false
- spring.cloud.bus.enabled=false
- spring.sleuth.stream.enabled=false
expose:
- “8000”
api-gateway:
container_name: api-gateway
image: registry.cn-shanghai.aliyuncs.com/choerodon/api-gateway:0.5.0
links:
- eureka-server
depends_on:
- eureka-server
ports:
- “8080:8080”
environment:
- zuul.routes.test.path=/test/**
- zuul.routes.test.serviceId=test-service
- eureka.client.serviceUrl.defaultZone=http://eureka-server:8000/eureka/
- hystrix.stream.queue.enabled=false
- spring.cloud.bus.enabled=false
- spring.sleuth.stream.enabled=false
expose:
- “8080”
gateway-helper:
container_name: gateway-helper
image: registry.cn-shanghai.aliyuncs.com/choerodon/gateway-helper:0.5.0
depends_on:
- eureka-server
- mysql
links:
- eureka-server
- mysql
ports:
- “9180:9180”
environment:
- zuul.routes.test.path=/test/**
- zuul.routes.test.serviceId=test-service
- eureka.client.serviceUrl.defaultZone=http://eureka-server:8000/eureka/
- spring.datasource.url=jdbc:mysql://mysql/iam_service?useUnicode=true&characterEncoding=utf-8&useSSL=false
- spring.datasource.username=root
- spring.datasource.password=root
- hystrix.stream.queue.enabled=false
- spring.cloud.bus.enabled=false
- spring.sleuth.stream.enabled=false
iam-service:
container_name: iam-service
image: registry.cn-shanghai.aliyuncs.com/choerodon/iam-service:0.5.0
depends_on:
- eureka-server
- mysql
- kafka-0
links:
- eureka-server
- mysql
- kafka-0
ports:
- “8030:8030”
environment:
- eureka.client.serviceUrl.defaultZone=http://eureka-server:8000/eureka/
- spring.kafka.bootstrap-servers=kafka-0:9092
- spring.datasource.url=jdbc:mysql://mysql/iam_service?useUnicode=true&characterEncoding=utf-8&useSSL=false
- spring.datasource.username=root
- spring.datasource.password=root
- hystrix.stream.queue.enabled=false
- spring.cloud.bus.enabled=false
- spring.sleuth.stream.enabled=false
manager-service:
container_name: manager-service
image: registry.cn-shanghai.aliyuncs.com/choerodon/manager-service:0.5.0
depends_on:
- eureka-server
- mysql
- kafka-0
links:
- eureka-server
- mysql
- kafka-0
ports:
- “8963:8963”
environment:
- spring.kafka.bootstrap-servers=kafka-0:9092
- eureka.client.serviceUrl.defaultZone=http://eureka-server:8000/eureka/
- spring.datasource.url=jdbc:mysql://mysql/manager_service?useUnicode=true&characterEncoding=utf-8&useSSL=false
- spring.datasource.username=root
- spring.datasource.password=root
- hystrix.stream.queue.enabled=false
- spring.cloud.bus.enabled=false
- spring.sleuth.stream.enabled=false
oauth-server:
container_name: oauth-server
image: registry.cn-shanghai.aliyuncs.com/choerodon/oauth-server:0.5.0
depends_on:
- eureka-server
- mysql
links:
- eureka-server
- mysql
ports:
- “8020:8020”
environment:
- eureka.client.serviceUrl.defaultZone=http://eureka-server:8000/eureka/
- spring.datasource.username=root
- spring.datasource.url=jdbc:mysql://mysql/iam_service?useUnicode=true&characterEncoding=utf-8&useSSL=false
- spring.datasource.password=root
- hystrix.stream.queue.enabled=false
- spring.cloud.bus.enabled=false
- spring.sleuth.stream.enabled=false

首先不能通过127.0.0.1 连接,因为不同容器内的127.0.0.1都是本地,可以通过host连接。
access denied for user choerodon 请确保下数据库有对应的choerodon 用户,而且该用户有数据库的访问权限

docker run -p ip:hostPort:containerPort,你要把mysql的3306端口映射出来到3307啊,把mysql ports改成-“3307:3306”

你好,你可以参考下docker mysql 官方的说明,了解下如何使用docker启动mysql
https://hub.docker.com/_/mysql/