一、前言
阿里云RDS数据白名单一般只对内部的服务器开放,一般不会开放给外网直接访问,有时开发需要直接访问RDS数据库,平时我们使用的网络都是动态公网IP,经常会变化,设置白名单相对繁琐一点。想了一个简单办法,用阿里云ECS服务器代理访问RDS MySQL数据库。
二、参考资料
MySQL-Proxy下载地址(MySQL Proxy (Archived Versions)
MySQL :: Download MySQL Proxy (Archived Versions)/archives/proxy/
1、下载MySQL Proxy (Archived Versions)
2、解压 mysql-proxy-0.8.5-linux-debian6.0-x86-64bit.tar.gz
# 解压压缩包$ tar -zxvf mysql-proxy-0.8.5-linux-debian6.0-x86-64bit.tar.gz # 把文件移动到 /usr/local/mysql-proxy $ mv mysql-proxy-0.8.5-linux-debian6.0-x86-64bit /usr/local/mysql-proxy
3、创建配置文件 /usr/local/mysql-proxy/mysql-proxy.conf
$ cd /usr/local/mysql-proxy/ $ view mysql-proxy.conf # 编辑内容如下[mysql-proxy] daemon = true user = mysql keepalive = true plugins = proxy,admin ### 日志级别 log-level = info log-file = /usr/local/mysql-proxy/mysql-proxy.log pid-file = /usr/local/mysql-proxy/mysql-proxy.pid ### 本机ip地址 阿里云ECS服务器,用内网ip配置 端口为我们外网需要访问的端口 proxy-address = 172.18.75.162:3307 ## backend主 注意addresses 阿里云RDS 内网访问地址 [内网地址不产生流量] proxy-backend-addresses = rm-xxxxx.mysql.:3306 ## proxy的管理用户admin的IP和端口 我们内部的管理端口 [管理整个代理] admin-address= 127.0.0.1:9197 ### 下面的三个参数必须设定,否则mysql-proxy服务启动不了的 管理整个代理的账号和密码 admin-username = admin admin-password = adminsuperstar ### admin的lua脚本地址 admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
3、给 /usr/local/mysql-proxy/mysql-proxy.conf 执行权限,否则启动失败。
$ chmod 660 /usr/local/mysql-proxy/mysql-proxy.conf
4、启动 MySQL Proxy
# 启动 mysql proxy$ /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/mysql-proxy.conf # 关闭 mysql proxy $ killall -9 mysql-proxy # 也可以通过 mysql-proxy.pid 查看启动的进程号 $ cat /usr/local/mysql-proxy/mysql-proxy.pid 28269 # 终止该进程即可关闭代理 $ kill -9 28269
5、启动成功后的日志,上面配置文件的日志路径
$ tail -f /usr/local/mysql-proxy/mysql-proxy.log
6、阿里云开启ECS外网端口,监听的端口是 3307,我们外网通过这个端口访问 RDS MySQL数据库
7、阿里云RDS数据库添加阿里云ECS白名单
阿里云RDS数据库添加阿里云ECS白名单,否则访问不了,特别注意,尽量使用ECS的内网,内网不产生流量。添加 专有网络和经典网络白名单
8、用Navicat链接测试,连接成功
9、关闭 mysql-proxy
$ killall -9 mysql-proxy