MySQL传统方案和通过SSH连接哪个好?

一、背景之前待的几个公司,数据库、服务器权限都是给所有后端直接拉满的,但也会出现员工离职的情况,每次有人离职时都需要改数据库密码、服务器密码 。
每次密码修改后得告知所有开发修改本地密码,但这样的事情也不是经常发生,公司虽小但很稳定 。
假设你所待的公司是一个开发非常多的公司,有可能你待了一年还没认识全,人员流动的速度也非常快,这时上面那种方案的执行成本就非常高了 。
若此时把这个问题抛给你,让你解决你会有什么方案?
给大家介绍两种方案,一种传统方案另一种是通过SSH来实现的 。
二、传统方案MySQL版本:8.0.26
其中最简单的方案就是给每个人在数据库添加一个账号,具体步骤如下:
创建新用户
create user "kaka"@"%" identified by 'qwerty123456';其中kaka为自定义的用户名;%为登录域名,host为'%'时表示为 任意IP,为localhost时表示本机,或者填写指定的IP地址;qwerty123456为密码
为用户授权
grant all privileges on kaka.* to "kaka"@"%" with grant option;或grant all on *.* to "kaka"@"%";其中kaka.*,kaka为数据名,*为所有表,如果想授权全部表就把kaka.*写成*.*,当然这里是以开发库为基础的,所有的权限都得给 。当前也可以给予部分权限 。
刷新权限
flush privileges;使用用户名:kaka进行登录
发现kaka用户只有两个库,kaka库就是授权的库,当切换系统库时发现是没有权限的 。
在切到kaka库,是可以做正常的curd操作的

MySQL传统方案和通过SSH连接哪个好?

文章插图
 
给予部分权限
grant update on kaka.* to "kaka"@"%";flush privileges;若想给多个权限,则逗号隔开即可,update,select,insert ....,执行完切记需要刷新权限,否则不会生效
MySQL传统方案和通过SSH连接哪个好?

文章插图
 
撤销全部权限
这块有点小插曲,当执行撤销命令后报了这样一个错
Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation查阅了一下官方文档,原因是由于root用户没有SYSTEM_USER权限,把权限加入后即可解决
grant system_user on *.* to 'root';revoke all privileges ,grant option from kaka;或revoke all privileges on kaka.* from kaka;flush privileges;撤销部分权限
revoke select on kaka.* from kaka;kaka.*为表名,kaka为用户名
员工离职删除用户即可
drop from kaka;kaka 为用户名
嗯,成功的把MySQL权限给复习了一遍.....
三、通过SSH隧道连接MySQL数据库准备工作
主机名角色IP端口kaka1MySQL主机47.93.12.2043306kaka2远程服务器8.142.40.20233888
修改MySQL主机仅允许远程服务器连接
use mysql;update user set host='8.142.40.202' where user = "root";
MySQL传统方案和通过SSH连接哪个好?

文章插图
 
此时在MySQL主机服务器是直接登录不了的
MySQL传统方案和通过SSH连接哪个好?

文章插图
 
配置SSH连接MySQL主机
在远程主机执行
ssh -fN -L33888:47.93.12.204:3306 root@8.142.40.202在使用SSH连接使用时发现部分人员说是连接一直在断,影响了正常开发,只需要加上下面这个参数重新执行即可,这个参数是每60秒发送一个KeepAlive请求,保证终端不会因为超时空闲而断开连接
ssh -o ServerAliveInterval=60 -fN -L33888:47.93.12.204:3306 root@8.142.40.202注意前边是远程服务器 后边是远程主机的服务器账号、服务器地址
命令执行完成后,可以通过命令
mysql -h 127.0.0.1 -P 33888 -uroot -p密码是MySQL服务器的 MySQL密码


推荐阅读