如何撤销对mysql中新用户的*。*的访问?

时间:2013-04-26 08:17:34

标签: mysql privileges grant

在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中新用户的*.*访问权限?

2 个答案:

答案 0 :(得分:4)

如果不删除用户,您实际上无法撤消USAGE。 USAGE是全球级特权:

  

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

来自Privileges Provided by MySQL documentation

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

DROP USER 'admin'@'localhost';

答案 1 :(得分:2)

使用以下方法可以从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'@'%';