www.baike369.com
百科369 > MySQL教程 > MySQL收回用户的权限

MySQL收回用户的权限


MySQL收回用户的权限

收回用户的权限就是取消已经赋于用户的某些权限。例如,如果数据库管理员觉得某个用户不应该拥有DELETE权限,那么就可以将DELETE权限收回。收回用户不必要的权限可以在一定程度上保证系统的安全性。MySQL中使用REVOKE语句取消用户的某些权限。使用REVOKE收回权限以后,用户账户的记录将从db、host、tables_priv和columns_priv表中删除,但是用户账号记录仍然在user表中保存。

可以使用DROP USER语句删除user表中的账户记录。

在将用户账户从user表删除之前,应该收回相应用户的所有权限。

REVOKE语句有两种语法格式。第一种语法是收回所有用户的所有权限,此语法用于取消对于已命名的用户的所有全局层级、数据库层级、表层级和列层级的权限。基本的语法格式如下:

REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'user'@'host' [,'user'@'host',...]

REVOKE语句必须和FROM语句一起使用,FROM语句指明需要收回权限的账户。

第二种语法是收回指定的权限。基本的语法格式如下:

REVOKE priv_type [(columns)][,priv_type[(columns)]],...
ON table1,table2,...,tablen
FROM 'user'@'host'[,'user'@'host'...]

其中:

  • priv_type参数表示权限的类型。
  • columns参数表示权限作用于哪些列上。如果不指定该参数,表示作用于整个表。
  • table1,table2,...,tablen表示从哪个表中收回权限。
  • 'user'@'host'参数表示用户账户,由用户名和主机名构成。

要使用REVOKE语句,必须拥有mysql数据库的全局CREATE USER权限或UPDATE权限。


实例1

收回test2用户的UPDATE权限。

1. 使用SELECT语句查看test2用户的SELECT权限、UPDATE权限和GRANT权限。SELECT语句的执行结果如下:

使用SELECT语句查看test2用户的所有权限的操作效果

从上图中代码执行的结果可以看出,Select_priv、Update_priv和Grant_priv的值都为Y。

2. 收回test2用户的UPDATE权限。REVOKE语句的SQL代码如下:

mysql>REVOKE UPDATE ON *.* FROM 'test2'@'localhost';

执行结果如下:

收回test2用户的UPDATE权限的操作效果

结果显示,REVOKE语句执行成功。使用SELECT语句查看test2用户的UPDATE权限。SELECT语句的执行结果如下:

使用SELECT语句查看test2用户的UPDATE权限的操作效果

查询结果显示,Update_priv的值为N,说明test2用户的UPDATE权限已经收回。


实例2

收回test2用户的所有权限。REVOKE语句的SQL代码如下:

mysql>REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'test2'@'localhost';

执行结果如下:

收回test2用户的所有权限的操作效果

结果显示,REVOKE语句执行成功。使用SELECT语句查询test2用户的SELECT权限、UPDATE权限和GRANT权限。执行结果如下:

使用SELECT语句查询test2用户的所有权限的操作效果

结果显示,Select_priv、Update_priv和Grant_priv的值都为N。说明tst2用户的这些权限都被收回了。


提示

当从旧版本的MySQL升级时,如果要使用EXECUTE、CREATE VIEW、SHOW VIEW、CREATE USER、CREATE ROUTINE和ALTER ROUTINE权限,则必须首先升级授权表。

数据库管理员给普通用户授权时一定要特别小心,如果授权不当,可能会给数据库带来致命的破坏。一旦发现给用户的授权太多,应该尽快使用REVOKE语句将权限收回。此处应特别注意,最好不要授予普通用户SUPER权限和GRANT权限。

Copyright© 2011-2016 www.baike369.com All Rights Reserved