MySQL--如何授权、撤权用户的访问权限

举报
吾日三省贾斯汀 发表于 2021/09/09 22:41:04 2021/09/09
【摘要】 在实际的开发、测试、生产环境当中,对于关系型数据库mysql,通过给用户授权、撤权统一权限、方便管理。 本文结合实际,实践操作mysql用户授权、撤权,并记录了其过程和说明,方便后续开发及运维翻阅。 目录 一、授权     1、授权test用户所有IP访问     2...

在实际的开发、测试、生产环境当中,对于关系型数据库mysql,通过给用户授权、撤权统一权限、方便管理。

本文结合实际,实践操作mysql用户授权、撤权,并记录了其过程和说明,方便后续开发及运维翻阅。

目录

一、授权

    1、授权test用户所有IP访问

    2、授权test用户指定IP访问

二、撤权

    1、撤权test用户所有IP访问

    2、撤权test用户指定IP访问


一、授权

授权指令
grant 权限范围 on 库表范围 to '用户名'@'主机IP' identified by '用户密码' 权限传递标识

1、授权test用户所有IP访问

连接mysql
#mysql -uroot -p
Enter password:

执行授权指令
mysql>grant all privileges on *.* to 'admin'@'%' identified by 'adminpassword' with grant option;
刷新权限后生效
mysql>flush privileges;

参数说明
grant                                           #表示授权
all privileges                              #表示权限范围是所有权限,即超级管理员权限,可以指定权限,如查、删、增、改等权限:grant select,delete,insert,update...
on *.*                                           #表示权限生效于所有数据库、数据表,指定数据库、数据表,如:grant all privileges on db_name.table_name
to 'admin'@'%'                           #表示授权访问的用户名及主机,%表示所有主机,可以指定具体IP,如to 'root'@'192.168.0.1/255.255.255.0'
identified by 'rootpassword'    #表示授权访问的用户密码
with grant option                      #表示权限传递标识,授权用户可以将自己拥有的权限,授权给别的用户,实际当中一般除了管理员、root用户,普通用户一般不添加此标识

2、授权test用户指定IP访问

mysql>grant all privileges on *.* to 'test'@'192.168.0.1/255.255.255.0' identified by 'testpassword' with grant option;

授权test用户本地连接访问权限

mysql>grant all privileges on *.* to 'test'@'localhost' identified by 'testpassword' with grant option;

刷新权限后生效
mysql>flush privileges;

查看用户
mysql> select user,authentication_string,host from user;


二、撤权

1、撤权test用户所有IP访问

mysql>revoke all on *.* from test@'%';

2、撤权test用户指定IP访问

mysql>revoke all on *.* from test@'192.168.0.1/255.255.255.0';
mysql> flush privileges;

mysql对于已经建立的连接,无论是授权还是撤权,都不会影响到当前已连接用户的权限,重新连接后权限才会被刷新。

重新连接验证已撤权test用户
mysql>use mysql;
mysql>select * from user;

提示:[Err] 1142 - SELECT command denied to user 'test'@'192.168.0.1/255.255.255.0' for table 'user'

查询都没有权限操作了,表明撤权后的用户,用户被撤销了所有操作权限,不过用户表中还是存在该条用户信息,因此还可以正常连接登录到mysql
而且revoke all时,grant赋予给用户的传递权限with grant option,并不会被撤权,需手动update记录,对应用户表grant_priv字段

mysql>select user,host,grant_priv from user where user = 'test' and host = '192.168.0.1/255.255.255.0';
mysql>update user set grant_priv = 'N' where user = 'test' and host = '192.168.0.1/255.255.255.0';
mysql>flush privileges;


彻底删除test用户
mysql>use mysql;
mysql>delete from user where user = 'test' and host = '192.168.0.1/255.255.255.0';

查看用户
mysql> select user,authentication_string,host from user;

文章来源: blog.csdn.net,作者:吾日三省贾斯汀,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/JustinQin/article/details/78395449

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。