在 Oracle Cloud 安装了 mysql DB,从其他机器怎么都连接不上去。查了很久,一点点的确认下面几个层次的问题:
- mysql bind address: 不是 127.0.0.1
- mysql user: 不能指定 localhost
- Ubuntu Firewalls: 关闭 iptables
- Oracle Cloud subnet security rules: 开放内网 ip 端口
最复杂的是 iptables,机器安装后就已经一大串规则,我手动添加了开放 3306 端口后并没有效果。搞到我查了很久,以为哪里还有一层防火墙。
可以通过下面命令来清空所有规则:
sudo iptables -F
# 或者这个命令清空所有 groups
iptables-save | awk '/^[*]/ { print $1 }
/^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
/COMMIT/ { print $0; }' | iptables-restore
然后添加下面规则:
# add SSH port first
iptables -I INPUT -p tcp --dport 22 -j ACCEPT # ssh
iptables -I INPUT -p tcp --dport 80 -j ACCEPT # http
iptables -I INPUT -p tcp --dport 443 -j ACCEPT # https
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT # mysql
# Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Accept on localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow established sessions to receive traffic
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
最后切记要保存设置,要不然 reboot 设置会重置:
iptables-save > /etc/iptables/rules.v4
联系阅读:
Oracle VM 开放 80/443 端口