9

在 mysql 5.6 命令行客户端(以 root 身份登录时),我创建了一个用户:

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';

然后授予以下权限:

GRANT ALL PRIVILEGES ON databasename.* TO 'admin'@'localhost';

检查权限时:

SHOW GRANTS FOR 'admin'@'localhost';

上面已分配数据库的权限以及以下权限:

GRANT USAGE ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD...

我试图通过以下方式撤销特权:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'admin'@'localhost';

但它并没有删除*.*

如何*.*在 mysql 中撤销新用户的访问权限?

4

2 回答 2

11

在不删除用户的情况下,您实际上无法撤销 USAGE。USAGE 是一个全局级别的权限:

USAGE 特权说明符代表“无特权”。它在全局级别与 GRANT 一起用于修改帐户属性,例如资源限制或 SSL 特征,而不影响现有帐户权限。

来自MySQL 文档提供的权限

所以基本上如果你想删除 USAGE 权限,只需使用:

DROP USER 'admin'@'localhost';
于 2013-04-26T08:58:25.363 回答
3

可以使用以下命令从 MySQL 中的用户删除 USAGE 授权

SHOW GRANTS FOR 'user'@'%';

如果你看到这个命令的输出

GRANT USAGE ON `<database>`.* TO 'user'@'%' WITH GRANT OPTION

然后删除它使用具有刷新权限的撤销

REVOKE ALL PRIVILEGES ON `<database>`.* from 'user'@'%';

FLUSH PRIVILEGES;

REVOKE GRANT OPTION ON `<database>`.* from 'user'@'%';

FLUSH PRIVILEGES;

使用此命令验证更新的用户权限

SHOW GRANTS FOR 'user'@'%';
于 2020-01-30T20:08:35.087 回答