【问题标题】:What priviliges to GRANT (SQL) for this code (test assignment)此代码授予 (SQL) 的哪些权限(测试分配)
【发布时间】:2014-07-06 14:05:53
【问题描述】:

更新应用程序 设置接受='是' WHERE stID (SELECT stID From Student WHERE Grades>3.9);

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

我的猜测是:

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

问题询问是否需要 SELECT on Application(?)(因为 WHERE 部分)并且是否需要 UPDATE 学生(我很确定这个是否定的)。

还有一个问题:

查询:从学生中删除 stID 不在(从应用程序中选择 stID)

问题:哪些特权不是必需的? a) 在学生上删除

b) 选择学生

c) 删除应用程序

d) 选择应用程序

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

【问题讨论】:

    标签: mysql sql database privileges sql-grant


    【解决方案1】:

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

    没错。

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

    由于 WHERE 子句,应用程序需要 SELECT 权限。像这样的更新语句

    update application set accepted = 'yes';
    

    不需要 SELECT 权限。

    并且需要对 Student 进行更新(我很确定这个是否定的)。

    没有人试图更新学生。不需要 Student 的 UPDATE 权限。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-11
      • 2021-12-19
      • 2014-01-17
      • 2017-11-16
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多