MySQL数据库修改远程访问和连接权限,操作权限的方法
mysql:MySQL数据库修改远程访问和连接权限,操作权限的方法前几天晚上没事,就随便搭了个项目玩,今天晚上无意看到mysql日志文件里各种暴力访问。如下图可以看到几个IP地址都在各种骚操作,由此想到当时安装Mysql时,因为其本身出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问。所以为了方便直接用了如下代码:(MySQL8.0及之后的需要先创建用户,这里不赘
发现问题
前几天晚上没事,就随便搭了个项目玩,今天晚上无意看到mysql日志文件里各种暴力访问。如下图
可以看到几个IP地址都在各种骚操作,由此想到当时安装Mysql时,因为其本身出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问。所以为了方便直接用了如下代码:
(MySQL8.0及之后的需要先创建用户,这里不赘述了,可以自行百度)
# 授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
# 刷新
FLUSH PRIVILEGES;
上面的代码意思就是,允许所有用户使用’密码’登录数据库的root帐号来访问数据库。
处理
本来就是很小的服务器,免得被一直请求浪费资源,所以我准备限制IP访问数据库。
用了如下几段代码:
# 进入服务器
mysql -u root -p;
# 切换到 mysql用户
use mysql;
# 查询目前的用户权限
select user,host from user;
# 先把权限还原(只允许本机(localhost, 127.0.0.1)来连接访问)
update user set host='localhost' where host='%';
# 设置指定IP访问mysql数据库 IP这里可以使用%来表示所有。 如'110.110.110.%',就表示110.110.110.0-255都可以访问。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'IP' IDENTIFIED BY '密码' WITH GRANT OPTION;
# WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人,可以不加,就是被授权用户,不能再次授权给其他用户了。
# 上面的root可以改成别的用户,需要先新增用户,这里就不赘述了。
# ALL PRIVILEGES ON 后面的*.*表示所有数据库,可以指定为特定数据库。
# 下面是改操作权限
# ALL PRIVILEGES 可以改为 SELECT(只能查询)
# ALL PRIVILEGES 也可以改为 INSERT,UPDATE,DELETE(除了查询都有权限)
# 撤销权限和赋予差不多 只需要把关键字 “to” 换成 “from” 即可
# REVOKE SELECT ON *.* FROM 'root'@'IP';(撤销查询权限)
# 执行刷新权限生效
flush privileges;
# 查询IP权限
show grants for root@'IP';
下图是查询的用户权限,%代表所有用户都可以访问
下图是查询的IP操作权限
总结
设置指定IP访问mysql数据库
(MySQL8.0及之后的需要先创建用户)
GRANT ALL PRIVILEGES ON . TO ‘root’@‘IP’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION;
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人,可以不加,就是被授权用户,不能再次授权给其他用户了。
IP这里可以使用%,来表示所有。 如’110.110.110.%’,就表示110.110.110.0-255都可以访问。
上面的root可以改成别的用户,需要先新增用户,这里就不赘述了。
ALL PRIVILEGES ON 后面的*.*表示所有数据库,可以指定为特定数据库。
下面的是改操作权限
ALL PRIVILEGES 可以改为 SELECT(只能查询)
ALL PRIVILEGES 也可以改为 INSERT,UPDATE,DELETE(除了查询都有权限)
撤销权限和赋予差不多,只需要把关键字 “to” 换成 “from” 即可。
REVOKE SELECT ON . FROM ‘root’@‘IP’;(撤销查询权限)
更多推荐
所有评论(0)