可以在MySQL的桌面名称上使用通配符作为GRANT

时间:2009-09-28 21:17:04

标签: mysql grant

在MySQL中是否可以在数据库中的一组表上对用户进行GRANT,例如允许创建和删除某些表名而不是其他表名吗?

这些似乎都不起作用:

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

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

3 个答案:

答案 0 :(得分:5)

在GRANT语句中唯一可用的通配符是*

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

全是或全;没有工具可以将表名动态匹配到授予的权限。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

然后让测试用户访问NewDatabase GRANT选择NewDatabase。* to' testuser' @' localhost'

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

还记得你可以在视图的WHERE部分做一个USER():

例如: 创建视图测试 select * from original.customer,其中mysql_user = USER()

在原始客户中,您必须有一个列' mysql_user' 并且允许测试用户看到的每一行都必须将testuser @ localhost作为条目

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