远程连接docker中的mysql容器 报错10060 unknown error解决办法详解。

环境:centOs-7,在阿里云轻量级服务器上用docker部署mysql容器。

猜测原因:1)mysql权限问题,2)防火墙的问题 3)端口号不正确。

1.先用docker部署mysql容器

docker run -d --name=my_mysql -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

2.后用navicat连接测试发现失败


1) 猜测是mysql权限问题,mysql账户是否不允许远程连接

[root@localhost ~]# docker exec -it mysql bash//进入容器的命令

 mysql -u root -p //登录MySQL

 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; //任何远程主机都可以访问数据库

 mysql> FLUSH PRIVILEGES; //需要输入次命令使修改生效

2) 防火墙问题:很多时候在liunx系统上安装了web服务应用后(如tomcat、apache等),需要让其它电脑能访问到该应用,而linux系统(centos-7、redhat等)的防火墙是默认只对外开放了22端口,可能没有对mysql的3306开放端口。

而centOs宿主机的端口设置在/etc/sysconfig/iptables文件中配置。

vi编辑器的用法:esc:命令行模式/插入模式;i:插入,wq:保存推出,q:退出,q!:不保存退出

把-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 放在下面的位置,不要乱放,这就开放了mysql远程连接的端口,然后重启一下iptables的服务就ok了。

[root@localhost ~]# vi /etc/sysconfig/iptables

# sample configuration for iptables service

# you can edit this manually or use system-config-firewall

# please do not ask us to add additional ports/services to this default configuration

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT//centos-7默认的端口

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT//tomcat端口

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT //mysql端口

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

~

[root@localhost ~]# service iptables restart

Redirecting to /bin/systemctl restart iptables.service

[root@localhost ~]#

3)如果以上两个方法都没效果,可以看下是否端口问题,在服务器上记得把对应的端口开放,比如我一开始设置的对应端口为3306,所以服务器上也需要开放


3、以下是效果图。


结束语:希望能帮到大家。

你可能感兴趣的:(远程连接docker中的mysql容器 报错10060 unknown error解决办法详解。)