在阿里云服务器上通过docker-compose 创建 MySQL 外部无法连接,进入容器内部通过命令可以连接,查看进程运行也正常,外部通过各种连接工具都无法进行连接,百度了半个小时,发现同样的问题有很多种解决方法,
我的报错信息是通过SQLyog连接的时候报“2003“异常
docker-compose.yml
version: '3.1'
services:
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
ports:
- 3306:3306
volumes:
- ./data:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 8080:8080
汇总网上常见的解决方法:
- 防火墙的问题,查看防火墙是否开启,将防火墙关闭,或者将3306(数据库对应的端口)打开
- docker-compos.yml配置文件的问题:往docker-compose.yml中添加"command: --default-authentication-plugin=mysql_native_password "一行,我的配置文件已经添加了,因此可以排除这个解决方案
- 阿里云服务器本身的安全策略,需要手动进入阿里云服务器的控制台开启对应的端口,我是通过第三种方法解决的