场景:因CTO需要手动直接更改客户资料要登陆数据库。(不要说啥,让登陆数据库不安全....)
但是直接授权数据库又感觉也是不安全
grant all on 库.* to CTO@"%" identified by "password"; (允许所有IP访问,也不安全)
grant all on 库.* to CTO@"IP" identified by "password"; (虽然这个授权 只允许某个IP登陆,但我想说,公司外网IP会变,鬼知道会变成什么,所以也行不通)
因为主机用的云,不存在什么内网。而CTO用MySQL图形工具,要使用公网IP才能连接。
为了运维的人身安全(数据被其他人入侵,然后没了?),决定在想个办法。
------------------------------------------------------------------------------------------------------------------------------
解决方法:
因为云服务器,可以添加扩展网卡(既使用双网卡方式)
服务器使用是2台,1web+1mysql
web服务器使用(第二个网卡)私网IP直接连接mysql
将公网IP绑定在第一个网卡上,因为web和mysql连接是使用第二个网卡IP 所以第一个网卡如果down掉也可以传输数据
所以也可以直接授权了
grant all on 库.* to CTO@"%" identified by "password";
思路:
在web服务器上 写脚本 (用脚本控制mysql服务器的公网网卡)
ssh root@第二个网卡IP地址 "ifup 第一个网卡名字" (打开网卡命令)
ssh root@第二个网卡IP地址 "ifdown 第一个网卡名字" (关闭网卡命令)
(上面命令要使用密钥方式连接 不然需要输入密码)
给 CTO 2个按钮,一个开启公网网卡连接,一个关闭公网网卡连接
当CTO需要改数据库 就登陆一个web页面 点击开启,公网网卡开启
修改完成 点击关闭 网卡关闭 公网连接自然就断开。
web页面会写的自己写,不会就让开发写。很简单,写的点击按钮能调用脚本就行
或者用jenkins(构建任务,注意jenkins的用户安全和权限控制)。