【问题标题】:Grant privileges to certain mysql database tables quickly by using "*"?使用“*”快速授予某些mysql数据库表的权限?
【发布时间】:2015-06-26 02:59:16
【问题描述】:

有没有可能做这样的事情?

GRANT SELECT , INSERT , UPDATE , DELETE ON  `database`.`prefix_*` TO  'user'@'localhost';

这让我可以为每个以“prefix_”开头的表快速设置权限

【问题讨论】:

  • 是的,但是使用% 作为通配符,而不是*,并用反斜杠转义_,因为它本身也是一个通配符。 prefix\_%
  • 当我使用反斜杠转义命令时,我得到:#1103 - Incorrect table name 'prefix\_%'
  • 当前是否存在带有prefix_ 的表?
  • 是的,但它是在旧的测试机器上 - 这种通配符情况是从旧版本中存在还是仅在新版本中存在?当我指定完整的表名时,我可以使用“prefix_”授予对所有表的访问权限,而不是使用通配符。
  • 您是否像示例中那样使用反引号引用?您是以 root 身份授予的,还是仅对该数据库具有有限特定授权的用户?我刚刚测试过,可以让它正常工作。

标签: mysql


【解决方案1】:

您可以使用% 代替*

GRANT SELECT , INSERT , UPDATE , DELETE ON  `database`.`prefix\_%` TO  'user'@'localhost';

来自docs

在指定数据库名称时允许使用 “_”“%” 通配符 在授予全局或数据库权限的 GRANT 语句中 水平。这意味着,例如,如果您想使用“_” 字符作为数据库名称的一部分,您应该将其指定为“_” GRANT 语句,以防止用户能够访问 与通配符模式匹配的其他数据库;

【讨论】:

  • 如文档所述,您只能在数据库名称中使用%,而不是表名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 2011-06-28
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多