我有一个MySQL用户,我希望它只查看我想要的视图,而不是数据库中的任何其他表.我仅在某些视图上授予此用户权限,如下所示:
GRANT SHOW VIEW ON `myDatabase`.`awesome_view` TO 'thisUser'@'%'
如果我做演出补助金;声明我只能按预期看到此权限.
但是,我希望这个用户只查询视图,而不是查询与这些视图相关的表,但我找不到这样做的方法.似乎如果我希望用户在视图上进行选择,那么也必须为表授予选择权,否则我错了?
如果我拒绝其余表中的select语句,并在命令行中尝试进行选择,我得到以下内容:
SELECT * FROM myDatabase.fordibenForYouTable;
ERROR 1142 (42000): SELECT command denied to user 'thisUser'@'localhost' for table 'fordibenForYouTable'
这就是我想要的,但如果我选择了视图数据,我也被拒绝了.
有没有一种方法可以让用户只使用视图而不是表格?
解决方法:
您必须将视图视为表格. information_schema已经有了
如果你跑
SELECT table_name FROM information_schema.tables
WHERE engine IS NULL;
你得到了所有的意见.
只需将视图上的SELECT授予用户,如下所示
GRANT SELECT ON `myDatabase`.`fordibenForYouTable` TO 'thisUser'@'localhost' ;
执行此操作后,您应具有对表的SELECT访问权限.
为了确保,为’thisUser’运行SHOW GRANTS @’localhost’;
您还应该能够看到“thisUser”@“localhost”授予了哪些表级访问权限
SELECT * FROM mysql.tables_priv
WHERE user='thisUser' and host='localhost'\G
您还可以查看哪些用户具有对myDatabase.fordibenForYouTable的表级访问权限
SELECT * FROM mysql.tables_priv
WHERE db='myDatabase' and table_name='fordibenForYouTable'\G
试试看 !!!
标签:mysql,permissions,view
来源: https://codeday.me/bug/20190805/1593768.html