一止长渊

本地navicat如何连接centos虚拟机下docker内mysql容器

N 人看过
字数:398字 | 预计阅读时长:1分钟
  1. 首先确保宿主机能够 ping 同 centos 虚拟机
  2. centos 虚拟机需要开放 mysql 容器创建时指定的 centos 映射端口 3306,类似腾讯云中的安全组来开放

查看 centos 中是否安装 iptables 防火墙,如果没有进行安装

/etc/sysconfig/iptables不存在,就是没有安装iptables防火墙
可以通过以下命令安装iptables防火墙
systemctl stop firewalld
systemctl mask firewalld
yum install iptables-services
service iptables status
//设置开机启动
systemctl enable iptables
之后你就能找到/etc/sysconfig/iptables文件
  1. 编辑 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
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

在开放的 22 端口下面添加上这一行,来开放 3306 端口
注意这里自己编写容易出错,这里直接复制 22 端口那一行,然后修改 22 为 3306 即可,否则

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

# 重启防火墙
service iptables restart
  1. 这时候 navicat 还是不能访问,因为我们创建的 root 用户访问只能 locahost
# 进入mysql容器
docker exec -it mysql /bin/bash
mydql -uroot -pmake1234
update user set host = '%' where user = 'root'; # 修改为任何主机都可以root远程连接
flush privileges;

截屏2021-03-11 22.02.28.png

参考:https://blog.csdn.net/szu_Vegetable_Bird/article/details/80216201

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。