精华内容
下载资源
问答
  • 用户王明对两个表
    2022-04-15 07:56:30

    题目来自:《数据库系统概论(第5版)》

    P155.6.对下列两个关系模式:
    学生(学号,姓名,年龄,性别,家庭住址,班级号)
    班级(班级号,班级名,班主任,家长)
    建立以下的表:

    CREATE TABLE IF NOT EXISTS STUDENT(
        Sno VARCHAR(20) PRIMARY KEY ,
        Sname VARCHAR(30),
        Sage INT,
        Ssex VARCHAR(5),
        Saddress VARCHAR(50),
        Cno VARCHAR(20)
    );
    
    CREATE TABLE IF NOT EXISTS CLASS(
        Cno VARCHAR(20),
        Cname VARCHAR(30),
        Ccharge VARCHAR(30),
        Cmonitor VARCHAR(20),
        FOREIGN KEY (Cmonitor) REFERENCES STUDENT(Sno)
    );
    

    (1)授予用户U1对两个表的所有权限,并可给其他用户权限。

    GRANT ALL PRIVILEGES 
    ON STUDENT
    TO U1
    WITH GRANT OPTION;
    GRANT ALL PRIVILEGES 
    ON CLASS
    TO U1
    WITH GRANT OPTION;
    

    (2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。

    GRANT SELECT,UPDATE(Saddress)
    ON STUDENT
    TO U2;
    

    (3)将对班级表查看权限授予所有用户。

    GRANT SELECT
    ON TABLE CLASS
    TO PUBLIC;
    

    (4)将对学生表的查询、更新权限授予角色R1。

    GRANT SELECT,UPDATE
    ON STUDENT
    TO R1;
    

    (5)将角色R1授予用户U1,并且U1可继续授权给其他角色。

    GRANT R1
    TO U1
    WITH ADMIN OPTION;
    

    P155.7.今有以下两个关系模式:
    职工(职工号,姓名,年龄,职务,工资,部门号)
    部门(部门号,名称,经理名,地址,电话号)

    CREATE TABLE IF NOT EXISTS DEPARTMENT(
        Dno VARCHAR(20) PRIMARY KEY,
        Dname VARCHAR(30),
        Dman VARCHAR(30),
        Daddress VARCHAR(50),
        Dphone VARCHAR(15)
    );
    
    CREATE TABLE IF NOT EXISTS EMPLOYEE(
        Eno VARCHAR(20) PRIMARY KEY,
        Ename VARCHAR(30),
        Eage INT,
        Eposition VARCHAR(30),
        Ssalary INT,
        Dno VARCHAR(30),
        FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dno)
    );
    

    (1)用户王明对两个表有SELECT权限。

    GRANT SELECT
    ON EMPLOYEE
    TO 王明;
    
    GRANT SELECT
    ON DEPARTMENT
    TO 王明;
    

    (2)用户李勇对两个表有INSERT和DELETE权限。

    GRANT INSERT,DELETE
    ON EMPLOYEE
    TO 李勇;
    
    GRANT INSERT,DELETE
    ON DEPARTMENT
    TO 李勇;
    

    (3)每个职工只对自己的记录有SELECT权限。

    GRANT SELECT
    ON TABLE EMPLOYEE
    WHEN USER()=Ename
    TO ALL;
    

    (4)用户刘星对职工表有SELECT权限,对工资字段具有更新权限。

    GRANT SELECT,UPDATE(Ssalary)
    ON EMPLOYEE
    TO 刘星;
    

    (5)用户张新具有修改这两个表的结构的权限。

    GRANT ALTER
    ON EMPLOYEE
    TO 张新;
    
    GRANT ALTER
    ON DEPARTMENT
    TO 张新;
    

    (6)用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限。

    GRANT ALL PRIVILEGES
    ON TABLE EMPLOYEE
    TO 周平
    WITH GRANT OPTION;
    
    GRANT ALL PRIVILEGES
    ON TABLE DEPARTMENT
    TO 周平
    WITH GRANT OPTION;
    

    (7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。

    CREATE VIEW DEP_SALARY(DNAME,MAXSALARY,MINSALARY,AVGSALARY)
    AS SELECT Dname,MAX(Ssalary),MIN(Ssalary),AVG(Ssalary)
    FROM EMPLOYEE NATURAL JOIN DEPARTMENT
    GROUP BY EMPLOYEE.Dno;
    
    GRANT SELECT
    ON DEP_SALARY
    TO 杨兰;
    

    P155.8.针对习题7中(1)~(7)的每一种情况,撤销各用户所授予的权限。
    (1)撤销用户王明对两个表具有的SELECT权限。

    REVOKE SELECT
    ON EMPLOYEE
    FROM 王明;
    
    REVOKE SELECT
    ON DEPARTMENT
    FROM王明;
    

    (2)撤销用户李勇对两个表具有的INSERT和DELETE权限。

    REVOKE INSERT,DELETE
    ON EMPLOYEE
    FROM李勇;
    
    REVOKE INSERT,DELETE
    ON DEPARTMENT
    FROM李勇;
    

    (3)撤销每个职工对自己记录的SELECT权限。

    REVOKE SELECT
    ON EMPLOYEE
    WHEN USER()=Ename
    FROM ALL;
    

    (4)撤销用户刘星对职工表具有的SELECT权限以及对工资字段的更新权限。

    REVOKE SELECT,UPDATE(Ssalary)
    ON EMPLOYEE
    FROM刘星;
    

    (5)撤销用户张新修改这两个表的结构的权限。

    REVOKE ALTER
    ON EMPLOYEE
    FROM张新;
    
    REVOKE ALTER
    ON DEPARTMENT
    FROM 张新;
    

    (6)撤销用户周平对两个表的所有权限(读、插、改、删数据)以及给其他用户授权的权限。

    REVOKE ALL PRIVILEGES
    ON TABLE EMPLOYEE
    FROM 周平
    WITH GRANT OPTION;
    
    REVOKE ALL PRIVILEGES
    ON TABLE DEPARTMENT
    FROM周平
    WITH GRANT OPTION;
    

    (7)撤销用户杨兰对每个部门职工中SELECT最高工资、最低工资、平均工资的权限。

    REVOKE SELECT
    ON DEP_SALARY
    FROM杨兰;
    

    P173.6.假设有下面两个关系模式:
    职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;
    部门(部门号,名称,经理名,电话),其中部门号为主码。
    用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:
    (1)定义每个模式的主码;(2)定义参照完整性;(3)定义职工年龄不得超过60岁;

    CREATE TABLE IF NOT EXISTS DEPARTMENT(
        Dno VARCHAR(20) PRIMARY KEY,
        Dname VARCHAR(30),
        Dman VARCHAR(30),
        Dphone VARCHAR(15)
    );
    
    CREATE TABLE IF NOT EXISTS EMPLOYEE(
        Eno VARCHAR(20) PRIMARY KEY,
        Ename VARCHAR(30),
        Eage INT CHECK (Eage<=60),
        Eposition VARCHAR(30),
        Ssalary INT,
        Dno VARCHAR(30),
        FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dno)
    );
    
    更多相关内容
  • 6.下列两个关系模式:   学生(学号、班级、年龄、性别、家庭住址、班级号) ...(1)授予用户U1对两个表的所有权限,并可给其他用户授权。 GRANT ALL PRIVILEGES ON Student,Class TO U1 WITH GRANT OPTION; (.

    在这里插入图片描述

    6.对下列两个关系模式:

      学生(学号、班级、年龄、性别、家庭住址、班级号)
      班级(班级号,班级名,班主任,班长)

    使用GRANT语句完成以下授权功能:

    create table Student
    (
    	Snum char(15) unique,
    	Sname char(10),
    	Sage int,
    	Ssex char(5),
    	Sloc char(20),
    	Scla char(5)
    );
     
    create table Class
    (
    	Cnum int,
    	Cname char(10),
    	Ctea char(10),
    	Cmon char(10)
    );
    

    (1)授予用户U1对两个表的所有权限,并可给其他用户授权。

    GRANT ALL PRIVILEGES
    ON Student
    TO U1
    WITH GRANT OPTION;
    
    GRANT ALL PRIVILEGES
    ON Class
    TO U1
    WITH GRANT OPTION;
    

    在这里插入图片描述
    在这里插入图片描述
    (2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。

    GRANT SELECT,UPDATE(Sloc)
    ON Student
    TO U2;
    

    在这里插入图片描述
    (3)将对班级表查看权限授予所有用户。

    GRANT SELECT
    ON Class
    TO PUBLIC;
    

    (4)将对学生表的查询、更新权限授予角色R1.

    GRANT SELECT,UPDATE 
    ON Student
    TO R1;
    

    在这里插入图片描述
    (5)将角色RI授予用户U1,并且U1可继续授权给其他角色。

    alter role R1
    add member U1
    

    在这里插入图片描述
    7.今有以下两个关系模式:

      职工(职工号,姓名,年龄,职务,工资,部门号)
      部门(部门号,名称,经理名,地址,电话号)

    用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能

    create table Staff
    (
    	Stnum char(15) unique,
    	Stname char(10),
    	Stage int,
    	Stw char(5),
    	Sts int,
    	Stn char(5)
    );
     
    create table Dep
    (
    	Dnum int,
    	Dname char(10),
    	Dmag char(10),
    	Dloc char(10),
    	Dcall char(13),
    );
    

    (1)用户王明对两个表有SELECT权限。

    GRANT SELECT
    ON Staff
    TO 王明;
    
    GRANT SELECT
    ON Dep
    TO 王明;
    

    在这里插入图片描述
    (2)用户李勇对两个表有INSERT和DELETE权限。

    GRANT INSERT,DELETE
    ON Staff
    TO 李勇;
    
    GRANT INSERT,DELETE
    ON Dep
    TO 李勇;
    

    在这里插入图片描述
    (3)每个职工只对自己的记录有SELECT权限。

    --先创建相应的视图,并且把员工ID作为员工的用户名
    create view Users
    as
    select *
    from Staff
    where Staff.Stnum=USER
    
    --创建好试图后,员工使用自己的用户名登录,直接从视图中查询,就只能看到自己的信息。
    grant select
    on Users
    to public;
    
    --查询
    SELECT *
    FROM Users;
    

    在这里插入图片描述
    (4)用户刘星对职工表有SELECT权限,对工资字段具有更新权限。

    GRANT SELECT,UPDATE(Sts)
    ON Staff
    TO 刘星;
    

    在这里插入图片描述
    (5)用户张新具有修改这两个表的结构的权限。

    grant update
    on Staff
    to 张新;
     
    grant update
    on Dep
    to 张新;
    
    或者
    
    grant alter
    on Staff
    to 张新;
    grant alter
    on Dep
    to 张新;
    

    在这里插入图片描述
    (6)用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限。

    GRANT ALL PRIVILEGES
    ON Staff
    TO 周平
    WITH GRANT OPTION;
    
    GRANT ALL PRIVILEGES
    ON Dep
    TO 周平
    WITH GRANT OPTION;
    

    在这里插入图片描述
    或者

    grant select,update,delete,insert
    on Staff
    to 周平;
    
    grant select,update,delete,insert
    on Dep
    to 周平;
    

    在这里插入图片描述
    (7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。

    --建立视图
    create view Dep_sts(DS_name,maxs,mins,avgs)
    as
    select Dep.Dname,max(Sts),min(Sts),avg(Sts)
    from Staff,Dep
    where Staff.Stnum=Dep.Dnum
    group by Staff.Stnum,Dep.Dname;
     
     --授权杨兰
    grant select
    on Dep_sts
    to 杨兰;
    

    在这里插入图片描述
    8.针对习题7中(1)~(7)的每一种情况,撤销个用户所授予的权限。

    1.
    REVOKE SELECT
    ON Staff
    FROM 王明;
    
    REVOKE SELECT
    ON Dep
    FROM 王明;
    
    2.
    REVOKE INSERT,DELETE
    ON Staff
    FROM 李勇;
    
    REVOKE INSERT,DELETE
    ON Dep
    FROM 李勇;
    
    3.同时删除视图
    revoke select
    on Users
    from public;
    drop view Users;
    
    4.
    REVOKE SELECT,UPDATE(Sts)
    ON Staff
    FROM 刘星;
    
    5.
    revoke update
    on Staff
    from 张新;
     
    revoke update
    on Dep
    from 张新;
    
    或者
    
    REVOKE ALTER
    ON Staff
    FROM 张新;
    
    REVOKE ALTER
    ON Dep
    FROM 张新;
    
    6.
    revoke all 
    on Staff
    from 周平 cascade;
     
    revoke all 
    on Dep
    from 周平 cascade;
    
    或者
    
    revoke select,update,delete,insert
    on Staff
    from 周平;
    
    revoke select,update,delete,insert
    on Dep
    from 周平;
    
    7.
    REVOKE SELECT
    ON Dep_sts
    FROM 杨兰;
    DROP VIEW Dep_sts;
    
    展开全文
  • 数据库第四章习题作业

    千次阅读 2021-04-20 15:04:58
    数据库第四章习题作业 这里写目录标题数据库第四章习题...(1)授予用户U1对两个表的所有权限,并可给其他用户授权。 第一步,新建题目中的 CREATE TABLE Class (Classnum INT PRIMARY KEY, Classname CHAR(4) UNIQUE

    目录

    6.对下列两个关系模式: 学生(学号、班级、年龄、性别、家庭住址、班级号) 班级(班级号,班级名,班主任,班长)。 使用GRANT语句完成以下授权功能:

    (1)授予用户U1对两个表的所有权限,并可给其他用户授权。

    第一步,新建题目中的表

    CREATE TABLE Class
    (Classnum INT PRIMARY KEY,
    Classname CHAR(4) UNIQUE NOT NULL,
    Teacher CHAR(6) NOT NULL,
    Monitor CHAR(6) NOT NULL
    )
    CREATE TABLE Student_A
    (Sno CHAR(11) PRIMARY KEY,
    Sname CHAR(6) NOT NULL,
    Sage SMALLINT NOT NULL,
    Ssex CHAR(2) CHECK (Ssex='男' OR Ssex='女'),
    Saddress CHAR(20),
    Classnum INT ,
    FOREIGN KEY (Classnum) REFERENCES Class(Classnum)
    );
    

    在这里插入图片描述

    第二步,新建用户U1:
    在这里插入图片描述
    在这里插入图片描述
    第三步,授权

    GRANT ALL PRIVILEGES
    ON Class
    TO U1
    WITH GRANT OPTION;
    GRANT ALL PRIVILEGES
    ON Student_A
    TO U1
    WITH GRANT OPTION;
    

    在这里插入图片描述

    (2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。

    GRANT SELECT,UPDATE(Saddress)
    ON Student_A
    TO U2;
    

    在这里插入图片描述

    (3)将对班级表查看权限授予所有用户。

    GRANT SELECT
    ON Student_A
    TO PUBLIC;
    

    (4)将对学生表的查询、更新权限授予角色。

    首先,新建角色。

    CREATE ROLE R1;
    

    在这里插入图片描述
    然后,授权

    GRANT SELECT,UPDATE
    ON Student_A
    TO R1;
    

    在这里插入图片描述

    (5)将角色R1授予用户U1,并且U1可继续授权给其他角色。

    GRANT R1
    TO U1
    WITH GRANT OPTION;
    

    但是,无法实现

    7.今有以下两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号)

    部门(部门号,名称,经理名,地址,电话号)

    请用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:

    (1)用户王明对两个表有SELECT权限。

    首先,建表

    CREATE TABLE Department
    (Sdeptnum CHAR(6) PRIMARY KEY,
    Dname CHAR(5) NOT NULL,
    Manager CHAR(8) NOT NULL,
    Address CHAR(15),
    PH CHAR(11)
    );
    CREATE TABLE Staff(
    Sno CHAR(11) PRIMARY KEY,
    Sname CHAR(10) UNIQUE NOT NULL,
    Sage INT,
    Sjod CHAR(5),
    Salary INT,
    Sdeptnum CHAR(6) REFERENCES  Department(Sdeptnum)
    );
    

    在这里插入图片描述

    GRANT SELECT
    ON Staff 
    TO 王明;
    GRANT SELECT
    ON  Department
    TO 王明;
    

    在这里插入图片描述

    (2)用户李勇对两个表有INSERT和DELECT权限。

    GRANT INSERT,DELETE
    ON Staff
    TO 李勇;
    GRANT INSERT,DELETE
    ON Department
    TO 李勇;
    

    在这里插入图片描述

    (3)每个职工只对自己的记录有SELECT权限。

    先建立可查询的视图

    CREATE VIEW USERS
    AS
    SELECT *
    FROM Staff
    WHERE Staff.Sno=USER;
    

    在这里插入图片描述

    GRANT SELECT
    ON USERS
    TO PUBLIC;
    

    (4)用户刘星对职工表有SELECT权限,对工资字段具有更新权限。

    GRANT SELECT,UPDATE(Salary)
    ON Staff
    TO 刘星;
    

    在这里插入图片描述

    (5)用户张新具有修改这两个表的结构的权限。

    GRANT ALTER 
    ON Staff
    TO 张新;
    GRANT ALTER
    ON Department
    TO 张新;
    

    在这里插入图片描述

    (6)用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限。

    GRANT ALL PRIVILEGES
    ON Staff
    TO 周平
    WITH GRANT OPTION;
    GRANT ALL PRIVILEGES
    ON Department
    TO 周平
    WITH GRANT OPTION;
    

    在这里插入图片描述
    但是,暂且忽略吧
    在这里插入图片描述

    (7)用户张兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。

    创建视图

    CREATE VIEW Salary_D(dname,maxsal,minsal,avgsal)
    AS
    SELECT Department.Dname,MAX(Salary),MIN(Salary),AVG(Salary)
    FROM Staff,Department
    WHERE Staff.Sdeptnum=Department.Sdeptnum
    GROUP BY Staff.Sdeptnum,Department.Dname;
    

    注意Department.Dname也要写在group by语句中,且要给视图中变量命名Salary_D(dname,maxsal,minsal,avgsal)
    授予权限

    GRANT SELECT
    ON Salary_D
    TO 杨兰;
    

    在这里插入图片描述

    8.对第7题的情况,撤销各用户所授予的权限。

    (1)撤销用户王明对两个表的SELECT权限。

    REVOKE SELECT
    ON Staff 
    FROM 王明;
    REVOKE SELECT
    ON  Department
    FROM 王明;
    

    在这里插入图片描述

    (2)撤销用户李勇对两个表的INSERT和DELECT权限。

    REVOKE INSERT,DELETE
    ON Staff
    FROM 李勇;
    REVOKE INSERT,DELETE
    ON Department
    FROM 李勇;
    

    在这里插入图片描述

    (3)撤销每个职工只对自己的记录的SELECT权限。

    REVOKE SELECT
    ON USERS
    FROM PUBLIC;
    DROP VIEW USERS;
    

    注意删除USERS视图。

    (4)撤销用户刘星对职工表的SELECT权限,对工资字段的更新权限。

    REVOKE SELECT,UPDATE(Salary)
    ON Staff
    FROM 刘星;
    

    在这里插入图片描述

    (5)撤销用户张新修改这两个表的结构的权限。

    REVOKE ALTER 
    ON Staff
    FROM 张新;
    REVOKE ALTER
    ON Department
    FROM 张新;
    

    在这里插入图片描述

    (6)用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限。

    
    REVOKE SELECT,UPDATE,DELETE,INSERT
    ON Staff
    FROM 周平;
    REVOKE SELECT,UPDATE,DELETE,INSERT
    ON Department
    FROM 周平;
    

    在这里插入图片描述

    注意:周平可以转让权限,报错
    so,需要指明cascade,加一个cascade会级联删除所有

    (7)撤销用户张兰从每个部门职工中SELECT最高工资、最低工资、平均工资的权限。

    REVOKE SELECT
    ON Salary_D
    FROM 杨兰;
    DROP VIEW Salary_D;--记得删除视图Salary_D
    
    

    在这里插入图片描述
    注:
    1.需要先建表,新建用户,新建角色等操作
    2.7.(3)中,需要先建立视图,视图保证了每个用户只对自己的记录有查询功能
    3.7.(7)由于Dname在Department表中,所以要写到group by语句中
    4.关于cascade的报错
    5.撤销权限时,注意删除创建的视图

    总结:感觉有难度,看上去简单,做起来难,还是要多动手实践哇

    展开全文
  • 数据库实验三-数据控制(安全性部分)

    数据控制(安全性部分)

    实验环境:Windows 10操作系统、MySQL 8.0、Navicat

    实验内容与完成情况:

    一、实验目的

    (1)熟悉通过SQL对数据进行安全性控制。

    (2)完成书本上习题的上机练习。

    二、实验平台MySQL

    MySQL及其交互式查询工具Navicat。

    三、实验内容和要求

    使用SQL对数据进行安全性控制,包括:授权和权力回收。操作完成后查看已授权的用户是否真正具有授予的数据操作的权力;权力收回操作之后的用户是否确实丧失了收回的数据操作的权力。

    四、实验步骤

    1.第6题:对下列两个关系模式:

    学生(学号,姓名,年龄,性别,家庭住址,班级号)

    班级(班级号,班级名,班主任,班长)

    【SQL语句创建关系模式】

    (实验源码见文章末)

    创建关系模式成功:

    【使用GRANT语句完成下列授权功能】

    (1)授予用户U1对两个表的所有权限,并可给其他用户授权。

    (2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。

    (3)将对班级表查看权限授予所有用户。

    GRANT SELECT ON TABLE Class TO PUBLIC;

    由于MySQL没有实现PUBLIC关键词。所以,要把一个表的select权限授予所有用户,需要自己遍历所有用户。

    (4)将对学生表的查询、更新权限授予角色R1。

    (5)将角色R1授予用户U1,并且U1可继续授权给其他角色。

    【查看已授权的用户是否真正具有授予的数据操作的权力】

    U1具有授予的数据操作的权力:

    U2具有授予的数据操作的权力:

    R1具有授予的数据操作的权力:

    2.第7题:今有以下两个关系模式:

    职工(职工号,姓名,年龄,职务,工资,部门号)

    部门(部门号,名称,经理名,地址,电话号)


    【SQL语句创建关系模式】

    创建关系模式成功:

    【创建题中用户】


    【加上视图机制】

    【用SQL语句的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能】


    (1)用户王明对两个表有SELECT权限。

    (2)用户李勇对两个表有INSERT和DELETE权限。

    (3)每个职工只对自己的记录有SELECT权限。

    (4)用户刘星对职工表有SELECT权限,对工资字段具有更新权限。

    (5)用户张新具有修改这两个表的结构的权限。

    (6)用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限。


    (7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。

    【查看已授权的用户是否真正具有授予的数据操作的权力】

    王明具有授予的数据操作的权力:

    李勇具有授予的数据操作的权力:

    刘星具有授予的数据操作的权力:

    张新具有授予的数据操作的权力:

    周平具有授予的数据操作的权力:

    杨兰具有授予的数据操作的权力:

    3.第8题:针对习题7中(1)~(7)的每一种情况,撤销每个用户所授予的权限。

    【权力收回操作之后的用户是否确实丧失了收回的数据操作的权力】

    所有用户数据操作的权力均被撤回,如下图所示:

    出现的问题:

    • 问题一

    由于使用的是MySQL数据库,对所有用户进行授权操作时无法使用PUBLIC,需要自行遍历。

    • 问题二

    若使用

    CREATE USER 'U1'@'localhost' IDENTIFIED BY '123456';

    命令创建用户,直接使用以下命令

    GRANT ALL ON TEST3.* TO U1 WITH GRANT OPTION;

    对用户授权会报错。

    解决方案:

    • 问题一

    使用public是被告知不能使用grant创建用户,public似乎被解析为一个用户名,故需要通过select user,host  FROM mysql.user;将所有用户列出再进行授权操作。

    • 问题二

    修改授权命令为:GRANT ALL ON TEST3.* TO 'U1'@'localhost' WITH GRANT OPTION;

    心得体会:

    通过本次实验,更加理解和掌握了如何使用关系数据库标准SQL语言中的DCL语句实现数据库安全性。操作完成后查看已授权的用户是否真正具有授予的数据操作的权力时,可以直接使用图形化交互界面Navicat点击用户查看对应用户的权限,也可以通过数据库登录用户进行验证,如下图所示(R1无删除表的权限)。

    同时通过对用户的建立,了解到用户组与角色的概念有着相似之处。用户组是用户的集合,一个用户组可以包括多个用户,一个用户也可以属于多个用户组;角色则是权限的集合,一个用户可以拥有多个角色的身份,多个用户也可以属于同一种角色。它们都能够实现对用户权限更加灵活方便的管理。

    【实验源码-便于复制】

    /* 今有以下两个关系模式:
    学生(学号,姓名,年龄,性别,家庭住址,班级号)
    班级(班级号,班级名,班主任,班长)*/
    CREATE DATABASE IF NOT EXISTS TEST3 CHARACTER SET 'utf8';
    USE TEST3;
    CREATE TABLE IF NOT EXISTS Student( 
        Sno VARCHAR(9) PRIMARY KEY, 
        Sname VARCHAR(5) UNIQUE, 
        Sage INT(2), 
        Ssex VARCHAR(2),
        Shome VARCHAR(20),
        Sclass VARCHAR(9)
    );
    CREATE TABLE IF NOT EXISTS Class( 
        Cno VARCHAR(9) PRIMARY KEY,
        Cname VARCHAR(20) UNIQUE,
        ​Ctear VARCHAR(5),
        Cmon VARCHAR(9)
    );
    -- 1.授予用户U1对两个表的所有权限,并可给其他用户授权。
    CREATE ROLE U1;
    GRANT ALL ON TEST3.* TO U1 WITH GRANT OPTION;
    -- 2.授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。
    CREATE ROLE U2;
    GRANT SELECT,UPDATE(Shome) ON TABLE Student TO U2;
    -- 3.将对班级表查看权限授予所有用户。
    GRANT SELECT ON TABLE Class TO PUBLIC;
    /*MySQL没有实现public关键词。所以,要把一个表(如表table1)的select权限授予所有用户,需要自己遍历所有用户。*/
    GRANT SELECT ON TABLE Class TO U1,U2;
    -- 4.将对学生表的查询、更新权限授予角色R1。
    CREATE ROLE R1;
    GRANT SELECT,UPDATE ON TABLE Student TO R1;
    -- 5.将角色R1授予用户U1,并且U1可继续授权给其他角色。
    GRANT R1 TO U1 WITH ADMIN OPTION;
    
    /* 今有以下两个关系模式:
    职工(职工号,姓名,年龄,职务,工资,部门号)
    部门(部门号,名称,经理名,地址,电话号)*/
    CREATE DATABASE IF NOT EXISTS TEST3B CHARACTER SET 'utf8';
    USE TEST3B;
    create table Staff
    (
        Stno char(10) PRIMARY KEY,
        Stname char(10),
        Stage int(2),
        Stjob char(5),
        Stwage int(10),
        Stdno char(5)
    );
    create table Department
    (
        Dno char(5) PRIMARY KEY,
        Dname char(10),
        Dmname char(10),
        Daddress char(20),
        Dphone char(11)
    );
    -- 创建题中用户
    CREATE ROLE wangming;
    CREATE ROLE liyong;
    CREATE ROLE liuxing;
    CREATE ROLE zhangxin;
    CREATE ROLE zhouping;
    CREATE ROLE yanglan;
    -- 加上视图机制
    CREATE VIEW Staff_view AS SELECT * FROM Staff;
    CREATE VIEW Department_view AS SELECT * FROM Department;
    -- (1)加上视图机制,用户王明对两个表有SELECT权限。
    GRANT SELECT ON Staff_view TO wangming;
    GRANT SELECT ON Department_view TO wangming;
    -- (2)加上视图机制,用户李勇对两个表有INSERT和DELETE权限。
    GRANT INSERT,DELETE ON Staff_view TO liyong;
    GRANT INSERT,DELETE ON Department_view TO liyong;
    -- (3)每个职工只对自己的记录有SELECT权限。
    CREATE VIEW Staff_view2 AS SELECT * FROM Staff_view WHERE concat(Stname,'@%') = USER();
    GRANT SELECT ON Staff_view2 TO wangming,liyong,liuxing,zhangxin,zhouping,yanglan;
    -- (4)加上视图机制,用户刘星对职工表有SELECT权限,对工资字段具有更新权限。
    GRANT SELECT,UPDATE(Stwage) ON Staff_view TO liuxing;
    -- (5)加上视图机制,用户张新具有修改这两个表的结构的权限。
    GRANT ALTER ON Staff_view TO zhangxin;
    GRANT ALTER ON Department_view TO zhangxin;
    -- (6)加上视图机制,用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限。
    GRANT ALL PRIVILEGES ON Staff_view TO zhouping WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON Department_view TO zhouping WITH GRANT OPTION;
    -- (7)加上视图机制,用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。
    CREATE VIEW Depwage_view(Dname,maxs,mins,avgs) AS SELECT Dname,max(Stwage),min(Stwage),avg(Stwage) 
    FROM Staff_view,Department_view WHERE Staff_view.Stname=Department_view.Dname 
    GROUP BY Staff_view.Stno,Department_view.Dno;
    GRANT SELECT ON Depwage_view TO yanglan;
    
    -- 针对上述(1)~(7)的每一种情况,使用MySQL语句撤销用户所授予的权限。
    
    -- (1)撤销王明对两个表的SELECT权限。
    REVOKE SELECT ON Staff_view FROM wangming;
    REVOKE SELECT ON Department_view FROM wangming;
    -- (2)撤销李勇对两个表的INSERT和DELETE权限。
    REVOKE INSERT,DELETE ON Staff_view FROM liyong;
    REVOKE INSERT,DELETE ON Department_view FROM liyong;
    -- (3)撤销每个职工只对自己的记录有SELECT权限。
    REVOKE SELECT ON Staff_view2 FROM wangming,liyong,liuxing,zhangxin,zhouping,yanglan;
    -- (4)撤销刘星对职工表的SELECT权限,对工资字段具有更新权限。
    REVOKE SELECT,UPDATE(Stwage) ON Staff_view FROM liuxing;
    -- (5)撤销张新具有修改这两个表的结构的权限。
    REVOKE ALTER ON Staff_view FROM zhangxin;
    REVOKE ALTER ON Department_view FROM zhangxin;
    -- (6)撤销周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限。
    REVOKE ALL PRIVILEGES ON Staff_view FROM zhouping;
    REVOKE ALL PRIVILEGES ON Department_view FROM zhouping;
    -- (7)撤销杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限。
    REVOKE SELECT ON Depwage_view FROM yanglan;
    

    展开全文
  • 数据库系统概论第四章第7题

    千次阅读 多人点赞 2021-05-16 17:39:54
    (1)用户王明对两个表有SELECT权限。 (2)用户李勇对两个表有NSERT和DELETE权限。 (3)每个职工只自己的记录有SELECT权限。 (4)用户刘星职工有SELECT权限,工资字段具有更新权限。 (5)用户张新具有修改这两个表...
  • 只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。系统安全保护措施是否有效是数据库系统的主要指标之一.数据库的安全性和计算机系统的安全性,包括操作系统,网络系统...
  • 第四章作业

    2021-04-20 22:51:40
    先建立两个模式 学生(学号,姓名,年龄,性别,家庭住址,班级号) 班级(班级号,班级名,班主任,班长) create table Class ( Cno int primary key, Cname char(10) not null, Chead char(5) not null, C...
  • 数据库系统概论第五版 第4 章数据库安全性的课后习题答案(全),包含共课后11习题,能帮到你是我的荣幸,喜欢的朋友赞关,后续专栏持续更新
  • 触发器中两个临时详解

    千次阅读 2021-01-20 23:15:11
    触发器作为一种特殊的存储过程,它基于一个表而创建,与紧密相连,可以看作是的一部分,主要用来保证数据的完整性。在SQL Server中一张表可以有多触发器,用户可以针对delete、insert和update语句分别设置...
  • 6.下列两个关系模式: 学生(学号、班级、年龄、性别、家庭住址、班级号) 班级(班级号,班级名,班主任,班长) create table Student ( Snum char(15) unique, Sname char(10), Sage int, Ssex ...
  • 第四章课后习题

    2021-04-19 10:02:09
    (1)授予用户U1对两个表的所有权限,并可给其他用户授权。 grant all on Student to U1 with grant option; grant all on Class to U1 with grant option; (2)授予用户U2学生具有查看权限,并可给其他用户...
  • 6.下列两个关系模式: 学生(学号、班级、年龄、性别、家庭住址、班级号) 班级(班级号,班级名,班主任,班长)。 建表 DROP TABLE IF EXISTS Student DROP TABLE IF EXISTS Class CREATE TABLE Class ( Class...
  • 我们Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮...
  • (1)授予用户U1对两个表的所有权限,并可给其他用户授权。 grant all privileges on student,class to U1 with grant option; (2)授予用户U2学生具有查看权限,家庭住址具有更新权限。 grant select,update...
  • 文章目录1、简介2、安全性控制机制...(1)用户标识和鉴定 (2)存取控制 (3)视图 (4)审计 (5)密码存储 应用 <----------------> DBMS <----------------> OS <----------------> DB(由高到低
  • 数据库第四章课后题(2020.3.25作业)

    千次阅读 多人点赞 2020-03-26 09:06:40
    1.下列两个关系模式: 学生(学号,姓名,年龄,性别,家庭住址,班级号) 班级(班级号,班级名,班主任,班长) ...(1)授予用户U1对两个表的所有权限,并可给其他用户授权。 GRANT ALL PRIVILEGES ON TABL...
  • 第四章习题作业

    2021-04-18 19:08:17
      该章一共三道题,都是...首先,我们应该在一个数据库下面建立对应的这两个基本,然后把题目中的用户和角色建立出来。用户和角色在之前的实验建立过,不嫌麻烦的话我们可以新建一个! create table Student ( S
  • 首先我们得有一数据库,数据库里有 职工:部门: 接下来的操作都是针对以上的 其次我们来建立登录用户 create login 王明 with password='123456'--创建登录用户, 登录名为王明,密码为...
  • ** 数据库习题—第四章 ...(1)授予用户U1对两个表的所有权限,并可给其他用户授权。 grant all on Student------grant中我们只能一个进行操作(在Sql sever中) to U1 ,U2 with grant option; grant all priv
  • --新建用户名 (1)用户王明对两个表有SELECT权限。 GRANT SELECT ON Employee TO 王明; GRANT SELECT ON Department TO 王明 (2)用户李勇对两个表有INSERT和DELETE权限。 GRANT SELECT,INSERT ON Employee TO ...
  • 数据库【第四章作业题】

    千次阅读 2021-04-18 08:00:11
    6.下列两个关系模式:   学生(学号、班级、年龄、性别、家庭住址、班级号)   班级(班级号,班级名,班主任,班长)。 使用GRANT语句完成以下授权功能 首先建立以下实验需要的table。 create table ...
  • 数据库及数据库中等数据库对象的建立实验(包括关系图、完整性、权限控制、视图、索引等内容)实验1 SQL Server的安装安装过程展示实验2 设计数据库、创建数据库和数据实验5 视图实验6 完整性约束实验7 权限管理...
  • 数据库练习

    千次阅读 2021-12-23 11:41:56
    Stu(Sno,Sname,age,sex,address,Cno) Class(Cno,Cname,Hmater,Mon) 使用GRANT语句完成下列授权功能: (1)授予用户U1对两个表的所有权限,并可给其他用户授权。 grant all privileges on Stu, Class to ...
  • 1、用户王明对两个表有SELECT权限。 2、用户李勇对两个表有INSERT和DELETE权限。 3、用户刘星职工有SELECT权限,工资字段有更新权限。 4、用户张新对两个表有修改结构权限。 5、用户周萍对两个表有所有操作...
  • 数据库原理实验(第四章作业)

    千次阅读 2021-04-22 17:24:40
    (1)授予用户U1对两个表的所有权限,并可给其他用户授权 (2)授予用户U2学生具有查看权限,家庭住址具有更新权限 (3)将班级查看权限授予所有用户 (4)将学生的查询,更新权限授予角色R1 (5)将...
  • MySQL每个用户自己的记录有select权限原题再现1....**今有以下两个关系模式 : 职工(职工号,姓名,年龄,职务,工资,部门号) 部门(部门号,名称,经理名,地址,电话号) 请用SQL的 GRANT和 R...
  • 基本:是独立存在的,在SQL中,一关系对应于一个表 视图:是从一或多基本所导出的。视图本身并不独立,是一虚化的 视图的优点 视图能够简化用户的操作 视图能够使用户能以多种角度看待同一...
  • 建立多个用户,给他们赋予不同的权限,然后查看是否真正拥有被授予的权限了。具体如下: 建立用户U1、U2、U3、U4、U5、U6、U7,选择其数据库角色全部允许为public。 代码: CREATELOGINU1WITHPASSWORD='U1U1' ...
  • 【判断题】A0 图纸的幅面为 841... 2 实验平台 2.1 操作系统: Windows 2000 或者 Windows XP 2.2 SQL Server 2000 3 实验要求 已知学生选课数据库 SSC 由下列表组成: 1) 的结构 学生 (student) 的结构 字段名 数...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 367
精华内容 146
热门标签
关键字:

用户王明对两个表