GRANT(SQL)对此代码有什么特权(测试分配)

时间:2014-07-06 14:05:54

标签: mysql sql database privileges grant

更新申请 SET Accepted ='YES' WHERE stID IN(SELECT stID FROM Student WHERE Grades> 3.9);

所以问题是授予用户需要成功运行此代码的权限。

我的猜测是:

应用程序的UPDATE权限,应用程序上的SELECT和学生上的SELECT,因此不需要学生更新。

这个问题询问是否需要在应用程序上使用SELECT(?)(由于WHERE部分)并且需要学生更新(我很确定这个是否为)。

另一个问题是:

query:DELETE FROM Student WHERE stID NOT IN(SELECT stID FROM Application)

问题:不需要以下哪些特权? a)删除学生

b)选择学生

c)删除申请

d)选择应用程序

主要是这些答案是我需要确定的,只是询问你的意见。

1 个答案:

答案 0 :(得分:1)

  

应用程序的UPDATE权限,应用程序上的SELECT和SELECT上的权限   学生,因此不需要学生更新。

那是对的。

  

问题是否需要SELECT on Application(?)(因为   WHERE部分)

由于WHERE子句,

Application上需要SELECT权限。像这样的更新声明

update application set accepted = 'yes';

不需要SELECT权限。

  

并且需要学生更新(我很确定这个是否定的)。

没有人试图更新学生。

不需要学生的UPDATE权限。

这一切都很容易测试。安装免费的开源数据库,如PostgreSQL。打开两个会话。以超级用户身份连接到另一个,并作为测试用户连接到另一个。使用超级用户会话授予和撤消权限,使用测试会话执行查询。