【问题标题】:GRANT permissions to wildcard database but specific table(s)授予通配符数据库但特定表的权限
【发布时间】:2013-01-14 17:52:20
【问题描述】:

所以,我知道我可以为所有表使用通配符数据库。例如,如果我想为匹配数据库中的所有表授予用户选择权限,我可以:

GRANT SELECT
ON 'databasesprefix%'.*
TO testuser@localhost IDENTIFIED BY 'testpasswd';

但是,如果我想在所有匹配的数据库上向用户授予 UPDATE、DELETE、INSERT 权限,但仅限于特定表,则以下操作不起作用:

GRANT UPDATE, DELETE, INSERT
ON 'databasesprefix%'.specifictable
TO testuser@localhost IDENTIFIED BY 'testpasswd';

有没有办法在 SQL 中做到这一点?还是我必须在外部编写脚本?

【问题讨论】:

  • 为什么每个数据库都有同一张表?这表明了一个非常非规范化的模式,这很可能是一个糟糕的设计选择。
  • 针对不同客户的相同应用程序单独设置孤岛。我无法控制这个设计。只是想添加具有特定权限的用户。

标签: mysql database sql-grant


【解决方案1】:

没有。 在 MySQL 中没有办法做到这一点。

http://dev.mysql.com/doc/refman/5.1/en/grant.html

priv_level:
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name

rtm :)

【讨论】:

  • 是的,阅读手册但无法明确告诉我何时阅读它是否数据库和表都可以通配符,因为您引用的 thh priv_level 没有提到 % 或 _ 元字符通配符。感谢您的澄清。
猜你喜欢
  • 2014-09-15
  • 2016-03-13
  • 2014-08-16
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
相关资源
最近更新 更多