您的位置:首页 > 数据库 > MySQL

5、Mysql的用户权限管理--查看,授权,回收

2016-04-06 20:54 721 查看
MySql用户管理使用CREATE USER,DROP USER,RENAME USER,SET PASSWORD等语法来完成,而MySql中用户权限配置管理中大部分都可以使用GRANT(赋予权限)和REVOKE(撤销权限)这两个语法来操作。其中,需要注意的是GRANT语句来赋予权限时,当被赋予权限的用户在系统中不存在时,会创建该用户,而后对该用户进行权限赋予。而REVOKE语句用来权限回收(撤销权限)时,即使被操作的用户所有的权限都被回收,但该用户并不会删除,要删除用户,请使用DROP
USER或者直接到mysql.user中删除该用户。

1、关于GRANT的具体实例

-- 1.赋予someuser@%这个用户在myDatabase上的所有权限
--  % 表示任意主机
--  如果用户不存在,则创建用户,密码为:somepassword
--  with grant option 表示这个用户,还可以授权给其他人
GRANT ALL ON myDatabasse.* TO 'someuser'@'%' IDENTIFIED BY 'somepassword' <span style="color:#ff0000;">with grant option</span> ;

-- 2. 赋予someuser@somehost这个用户在myDatabase上的权限
-- 该用户仅有SELECT和INSERT权限
GRANT SELECT, INSERT ON myDatabase.* TO 'someuser'@'somehost';

-- 3. 赋予someuser@somehost这个用户在myDatabase上myTbl表的权限
-- 该用户仅有myDatabase。myTbl上的SELECT和INSERT权限
GRANT SELECT, INSERT ON myDatabase.myTbl TO 'someuser'@'somehost';

-- 4. 赋予someuser@somehost这个用户在myDatabase上myTbl表的权限
-- 该用户仅有myDatabase.myTbl上某些列上有权限:
-- myTbl的colName1有SELECT和INSERT权限
-- myTbl的colName2只有INSERT权限
GRANT SELECT (colName1), INSERT(ColName1,ColName2) ON myDatabase.myTbl TO 'someuser'@'somehost';<strong>
</strong>


权限粒度可大可小吧,大至全局,小至单列,设置运用都能自如,不过需要注意,权限设置完毕之后,如果要马上生效,记得FLUSH PRIVILEGES一下哦。

2、关于REVOKE的用法

1、官方文档

REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user] ...

<pre name="code" class="sql">#如果你要回收某用户的所有权限,那么可以简单的使用下面这样的语句:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...



2、具体案例

-- 1.回收someuser@somehost这个用户所有权限
-- 注意: REVOKE并不会删除用户,即使权限被你扒光
-- 另外:如果你没有指定@后面的host,默认是使用%
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'someuser'@'somehost';
-- 2.回收someuser@somehost这个用户在myDatabase上的DROP权限
REVOKE DROP ON myDatabase.* FROM 'someuser'@'somehost';


3、查看用户的权限

1、查看指定用户的权限

SHOW GRANTS FOR user;
#user就是你要查看权限的用户,如果你不使用@host的方式,默认host是%。


2、查看当前用户的权限,下面的任何一个

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: