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';
1、查看指定用户的权限
SHOW GRANTS FOR user; #user就是你要查看权限的用户,如果你不使用@host的方式,默认host是%。
2、查看当前用户的权限,下面的任何一个
SHOW GRANTS; SHOW GRANTS FOR CURRENT_USER; SHOW GRANTS FOR CURRENT_USER();