欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MySQL学习笔记之二十四 撤销用户和授权_MySQL

程序员文章站 2024-01-10 22:39:54
...
撤销用户和授权的有两种方法,一是使用 REVOKE 语句,二是直接修改授权表。

一、使用 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;