在MySQL中是否可以在数据库中的一组表上对用户进行GRANT,例如允许创建和删除某些表名而不是其他表名吗?
这些似乎都不起作用:
GRANT SELECT ON `testdb`.`%_testing` TO 'wildcardtest'@'localhost';
GRANT SELECT ON `testdb`.`testing%` TO 'wildcardtest'@'localhost';
并且MySQL手册似乎没有给出答案。
答案 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'