MySQL学习笔记之二十四 撤销用户和授权_MySQL
一、使用 REVOKE 语句撤销授权
为了收回某个用户的权限,可使用 REVOKE 语句。除了要用 FROM 替换 TO 并且没 有 IDENTIFIED BY 或 WITH GRANT OPTION 子句外。
语法:REVOKE privileges (columns) ON what FROM user; user
部分必须页你想要取消其权限的用户的原始 GRANT 语句的 user 部分相匹配。
Privileges 部分不需要匹配,你可用 GRANT 语句授权,然后用 REVOKE 语句取消启 动的一部分。
REVOKE 语句只删除权限,不删除用户。用户的项仍然保留在 user 表中,即使你去 笑了改用户的所有权限也是如此。这意味着该用户仍然可以连接到服务其上。要删除整个 用
户,必须用 DELETE 语句将该用户的记录从 user 表中直接删除。要想删除整个用户, 必须直接将该用户的记录从 user 表中直接删除。
例如,如果你为一个数据库授权,如果需要在 mysql.db 表中创建一个条目。 mysql>GRANT ALL ON sample.* TO kite@localhost IDENTIFIED BY "ruby";
当所有为数据库的授权用 REVOKE 删除时,这个条目被删除。
mysql>REVOKE ALL ON sample.* FROM kite@localhost;
但是,boris@localhost 用户的条目仍旧留在 user 表中,你可以查看:
mysql>SELECT * FROM mysql.user;
二、直接修改授权表撤销用户或授权
显而易见,可以直接在授权表中给用户撤销授权,有时,这是唯一的方法,如撤销 一个用户。记住在你直接修改授权表时,你将通知服务器重载授权表,否则他不知道你的
改变。你可以执行一个 mysqladmin flush-privileges 或 mysqladmin reload 命令和 FLUSH PRIVILEGES 语句强迫一个重载。如果你忘记做这个,你会疑惑为什么服务器不做
你想做 的事情。
在上节最后一个例子中,可以这样撤销用户:
mysql>DELETE FROM mysql.user ->WHERE User=” kite” AND Host=” localhost”;
mysql>FLUSH PRIVILEGES; mysql>SELECT * FROM mysql.user;
DELETE 语句删除该用户的项,FLUSH 语句告诉服务器重新假造授权表(但是用 GRANT 或 REVOKE 语句,而不是直接修改授权表时,这些表将自动重新加载)。
而REVOKE ALL ON sample.* FROM boris@localhost 对应的,可以这样直接修改授 权表:
mysql>DELETE FROM mysql.db ->WHERE User=” boris” AND Host=” localhost” AND db=”sample”;
mysql>FLUSH PRIVILEGES;