介绍
- 云数据库受云服务商限制做了内网隔离仅供内访问,不提供公网的访问地址,一般仅提供一个phpmyadmin用于Web操作
需求
- 收到需求希望从公司直接连接被隔离在内网云数据库
- 两种解决方式 MySQL Proxy 和 iptables nat
[1]MySQL Proxy
- 下载mysql-proxy安装包到云服务器
wget http://cdn.mysql.com/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz
- 解压上述安装包
tar -xzf mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz
- 进入mysql proxy所在目录并运行
cd mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit/bin
./mysql-proxy --proxy-backend-addresses=10.10.10.88:3306 --proxy-address=10.10.10.66:3308
运行命令后,会显示如下信息,提示代理搭建成功:
2015-06-12 16:56:38: (critical) plugin proxy 0.8.4 started - 测试从外网访问云服务器上的mysql proxy
mysql -h 120.*.*.240 -P 4040 -u root -p
参数介绍:
--proxy-backend-addresses=10.10.10.88:3306 云数据库的ip和端口
--proxy-address=10.10.10.66:3308 代理的监听地址和端口。
--daemon 让代理处于后台运行
--keepalive 代理崩溃后尝试重启代理
[2]iptables nat
- 配置iptables
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3308 -j ACCEPT
iptables -t nat -A PREROUTING -d 10.10.10.66 -p tcp -m tcp --dport 3308 -j DNAT --to-destination 10.10.10.88:3306
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
10.10.10.88 --云主机内网地址
3308 --公网访问mysql的端口
10.10.10.66:3306 --云数据库地址和端口
- 开启转发 sysctl.conf
net.ipv4.ip_forward = 1
使修改生效
sysctl -p
测试访问