Loading...

mysql-proxy 代理让内网数据库被有限制的访问

最近公司有个 A高校 的数据迁移需求,数据库为mysql和mongodb

  • 数据从原来 A高校 课程中心迁移到 新平台,新平台为本公司平台
  • 本公司的数据库在内网,平时开放的时候需要安装vpn访问
  • 迁移数据时,需要在 A高校 的内网访问数据
  • A高校 无法访问外网(哈哈哈),只能开通到端的外网访问,也就是访问指定ip指定端口

这个需求本身还复杂很多,这里只是写一下解决这个数据访问的问题

  • 对外机器 外网ip 18.1136.1835.414 【仅为实例,非真实】
  • 内网数据库地址 mysql2.proxy.xx.com:1234 mysql登录账户 root 密码123456 【仅为实例,非真实】

下载mysql-proxy

https://downloads.mysql.com/archives/proxy/ 下载对应版本的gz
cd /opt
wget https://cdn.mysql.com/archives/mysql-proxy/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
mv mysql-proxy-0.8.5-linux-debian6.0-x86-64bit mysql-proxy

编辑/etc/profile文件 在环境变量中加入一下

LUA_PATH="/opt/mysql-proxy/share/doc/mysql-proxy/?.lua"
export LUA_PATH
export PATH=$PATH:/usr/local/mysql-proxy/bin

执行一下 source /etc/profile 重新加载一下环境变量

接下来是mysql-proxy配置文件

mkdir -p /opt/mysql-proxy/conf
vim /opt/mysql-proxy/conf/mysql-proxy.conf

mysql-proxy.conf内容如下

[mysql-proxy]
daemon = true
pid-file = /var/run/mysql-proxy.pid
log-file = /var/log/mysql-proxy.log
log-level = debug
max-open-files = 1024
plugins = admin,proxy
user = root

proxy-address = 0.0.0.0:3307
proxy-backend-addresses = mysql2.proxy.xx.com:1234
admin-lua-script = /opt/mysql-proxy/lua/admin.lua
admin-username = root
admin-password = 123456

  • 含注释配置文件
[mysql-proxy]
daemon = true
pid-file = /var/run/mysql-proxy.pid
log-file = /var/log/mysql-proxy.log
log-level = debug
max-open-files = 1024
plugins = admin,proxy
user = root #当前启动服务的 Linux用户为root

proxy-address = 0.0.0.0:3307    #代理后mysql访问3307。所以最后我们访问的mysql就为  18.1136.1835.414:3307,账号、密码保持不变
proxy-backend-addresses = mysql2.proxy.xx.com:1234  #内网mysql的访问地址
admin-lua-script = /opt/mysql-proxy/lua/admin.lua
admin-username = root   #内网mysql的访问用户
admin-password = 123456 #内网mysql的访问密码

修改mysql-proxy.conf权限,如果不修改后面会报错,需要660 的权限

chmod 660 mysql-proxy.conf
  • 启动mysql-proxy服务
/opt/mysql-proxy/bin/mysql-proxy  --defaults-file=/opt/mysql-proxy/conf/mysql-proxy.conf

最后因为是阿里云的服务器,所以还得要去开放防火墙和安全组

netstat -tunlp 查看使用中的端口


tcp        0      0 0.0.0.0:4041            0.0.0.0:*               LISTEN      12898/mysql-proxy
tcp        0      0 0.0.0.0:3307            0.0.0.0:*               LISTEN      12898/mysql-proxy

在安全组中允许4041 3307

最后就能使用外网访问了。再将ip和端口 18.1136.1835.414:3307 告诉 A高校 信息中心的人开放 该ip和端口的上行权限

你还可以在阿里云的安全组中限制访问端口4041 3307的IP,具体参考安全组的配置

posted @ 2021-07-01 19:47  倒霉蛋蛋虾  阅读(338)  评论(0编辑  收藏  举报