0

为了允许someuser在 SELECTs 上mydb执行,我可以执行以下语句:

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';
4

2 回答 2

1

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

您必须为每个表显式键入授权语句,或者编写脚本或程序来为您执行此操作。

于 2012-12-13T13:55:40.577 回答
1

基于GRANT语法:

GRANT
... priv_level ...

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

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

于 2012-12-13T13:59:34.573 回答