MySQL授予语法和通配符

时间:2012-12-13 13:53:38

标签: mysql

要允许someusermydb上执行SELECT,我可以执行以下语句:

GRANT SELECT ON mydb.* TO 'someuser'@'somehost';

假设我只想在两个表上允许SELECT:eventevent_detail

我想我可以做到以下几点:

GRANT SELECT ON mydb.event TO 'someuser'@'somehost';
GRANT SELECT ON mydb.event_detail TO 'someuser'@'somehost';

以下内容是否也有效? (假设没有其他表匹配)

GRANT SELECT ON mydb.event* TO 'someuser'@'somehost';

2 个答案:

答案 0 :(得分:1)

否 - 通配符只能用于整个表或数据库名称。

您必须明确地为每个表键入grant语句,或者编写脚本或程序来为您执行此操作。

答案 1 :(得分:1)

基于GRANT语法:

GRANT
... priv_level ...

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

所以我想你不能。无论如何,您可以使用INFORMATION_SCHEMA查找具有所需名称前缀的表,然后遍历它们。

相关问题