【问题标题】:Revoke mysql permissions on database撤销对数据库的mysql权限
【发布时间】:2017-07-07 10:47:46
【问题描述】:

我正在尝试删除用户对数据库的所有权限。

REVOKE ALL PRIVILEGES ON database.* FROM 'user'@'%';

这只是给出一个错误提示:

ERROR 1141 (42000): There is no such grant defined for user 'user' on host '%'

我在运行查询时以 root 用户身份登录。并且为用户查询运行 show grants 显示用户对所有数据库都有权限

显示授权查询的输出:

GRANT USAGE ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD 'xxxxxx'

【问题讨论】:

  • 你能把SHOW GRANTS for 'user'@'%'的输出包括进去吗?>
  • @AlexTartan 添加了 show grants 的输出
  • *.*database.* 是两个不同的东西。删除*.* 的授权,如果需要,添加其他数据库的授权
  • 假设database.* 是指定数据库的所有表,*.* 都是数据库,我是否正确?
  • @A.Jac database.* 表示该数据库中的所有表,*.* 表示该服务器上所有数据库中的所有表

标签: mysql permissions


【解决方案1】:

撤销声明必须与已发布的授权相匹配。如果授予*.*,您也只能撤销*.*

因为SHOW GRANTS for 'user'@'%' 显示如下一行:

GRANT USAGE ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD 'xxxxxx'

你需要撤销那个

这应该可行:

REVOKE ALL PRIVILEGES ON *.* FROM 'user'@'%';

database.*表示“数据库”数据库中的所有表
*.*表示所有数据库中的所有表

【讨论】:

    【解决方案2】:

    您可以执行以下查询,

    1) 撤销更改、更改例程、创建、创建例程、创建表空间、创建临时表、创建用户、创建视图、删除、删除、事件、执行、文件、索引、插入、锁定表、过程、参考、重新加载、复制客户端、复制从属、选择、显示数据库、显示视图、关闭、超级、触发、更新来自'user'@'%';

    从'user'@'%'中撤消上的所有权限。

    2) 从'user'@'%'撤销.上的授权选项;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 2011-07-14
      • 2012-04-14
      • 1970-01-01
      • 2021-03-03
      • 2018-06-12
      • 1970-01-01
      相关资源
      最近更新 更多