4

在 MySQL 中是否可以在数据库中的一组表上对用户执行 GRANT,例如允许 CREATE AND DROP 某些表名而不是其他表名?

这些似乎都不起作用:

GRANT SELECT ON  `testdb`.`%_testing` TO  'wildcardtest'@'localhost';
GRANT SELECT ON  `testdb`.`testing%` TO  'wildcardtest'@'localhost';

并且 MySQL 手册似乎并没有给出任何答案。

4

3 回答 3

5

GRANT 语句中唯一有效的通配符是 *

GRANT SELECT ON `testdb`.* TO 'user'@'localhost';
GRANT SELECT ON *.* TO 'privilegeduser'@'localhost';

全部或一个;没有将表名动态匹配到授予权限的工具。

于 2009-09-28T21:55:30.720 回答
1

没有。您可以用逗号分隔表名,但不能在 GRANT 中使用通配符。

于 2009-09-28T21:27:30.290 回答
1

创建一个新的空数据库。在这个新数据库 CREATE VIEW 测试中授予它对原始数据库的访问权限(使用已经有权访问原始数据库的用户)作为 SELECT * from originaldatabase.tablename WHERE 条件...

然后在 NewDatabase.* 上通过 GRANT select 授予测试用户对 NewDatabase 的访问权限到 'testuser'@'localhost'

然后只为您希望 testuser 访问的表创建视图。

另请记住,您可以在视图的 WHERE 部分执行 USER() :

示例:将视图测试创建为 select * from original.customer where mysql_user = USER()

在 original.customer 中,您必须有一个列“mysql_user”,并且允许测试用户查看的每一行都必须有 testuser@localhost 作为条目

testuser 会将所有创建的视图视为数据库“test”中的表

于 2015-09-16T10:23:28.470 回答