实验9.2 权限授予和撤销

更新于 2026年10月10日 版权声明
实验9.2 权限授予和撤销

【实验目的】

①掌握使用SQL进行权限的授予和撤销的方法。

②掌握使用图形界面工具进行权限的授予和撤销的方法。

【实验内容】

①使用SQL语句授予用户SQLUser1对数据库sales创建视图和表的权限,同时具有授予其他用户的权限,并进行验证。

②使用SQL语句授予用户SQLUser1对数据库sales的agents表的查询、插入、更新权限,并进行验证。

③使用SQL语句授予用户SQLUser2对数据库sales的customers表的列cid、cname的查询权限,并进行验证。

④使用SQL语句授予用户SQLUser2对数据库sales的products表中库存城市为Dallas的产品的编号、名称和单价进行查询的权限,并进行验证。

⑤使用图形界面工具授予用户SQLUser2对数据库sales中表的查询、更新和插入权限,并进行验证。

⑥使用SQL撤销用户账号SQLUser1数据库所有操作权限。

⑦使用SQL撤销用户账号SQLUser2数据库查询表中列的权限。

【实验步骤】

(1)使用SQL语句授予用户创建视图和表的权限

授予用户SQLUser1在数据库sales中创建视图和表的权限,同时授予其他用户的权限,并进行验证。

①用SQLUser1登录账户登录到MySQL,在“Schemas”选项卡中,看到没有任何数据库权限存在,如图9.12所示,表示用户SQLUser1没有对任何已有数据库的操作权限。

图示

图9.12 查看用户权限

②以root身份重新登录到MySQL,单击左上角按钮 图示,新建查询窗口。

③在查询窗口中输入如下SQL语句:

GRANT CREATE VIEW,CREATE ON sales.*
TO 'SQLUser1'@'localhost'
WITH GRANT OPTION;

④单击工具栏中的 图示 图标,执行上面的SQL语句,如图9.13所示。

图示

图9.13 授予用户权限

⑤验证SQLUser1具有创建表的权限。用SQLUser1登录账户登录到MySQL,依次展开节点“Schemas”→“sales”→“Tables”,右击“Create Table”,能够正常创建表,表示用户SQLUser1已经具备创建表的权限,如图9.14所示。

图示

图9.14 授予用户SQLUser1权限

⑥验证SQLUser1能将创建视图和表的权限再授予其他用户。用SQLUser1登录账户登录到MySQL后,在新建查询窗口中输入如下SQL语句。语句执行成功,如图9.15所示。

GRANT CREATE VIEW,CREATE ON sales.*
TO 'SQLUser2'@'localhost';

图示

图9.15 SQLUser1授予用户SQLUser2创建视图和表的权限

⑦验证SQLUser2具有创建表的权限。用SQLUser2登录账户登录到MySQL,依次展开节点“Schemas”→“sales”→“Tables”,右击“Create Table”,能够正常创建表,表示用户SQLUser2已经具备创建表的权限。

(2)使用SQL语句授予用户查询、插入和更新权限

授予用户SQLUser1对数据库sales的agents表的查询、插入、更新权限。

①用SQLUser1登录账户登录到MySQL,依次单击“Schemas”→“sales”→“Tables”,发现用户SQLUser1对agents表不具有查询、插入和更新权限,如图9.16所示。

图示

图9.16 用户SQLUser1对agents表查询、插入和更新失败

②以root身份重新登录到MySQL,单击左上角按钮 图示,新建查询窗口。

③在查询窗口中输入如下SQL语句:

GRANT SELECT,INSERT,UPDATE ON sales.agents
TO 'SQLUser1'@'localhost'

④单击工具栏中的 图示 图标,执行上面的SQL语句,如图9.17所示。

图示

图9.17 授予用户SQLUser1对agents表的权限

⑤验证。用SQLUser1登录账户登录到MySQL,依次单击“Schemas”→“sales” →“Tables”,对agents表进行查询、插入和更新操作,如果能够正常执行,表示用户SQLUser1已经具备对agents表的查询、插入、更新权限,验证查询权限如图9.18所示,插入和更新权限的验证类似。

图示

图9.18 验证用户SQLUser1的查询权限

(3)使用SQL语句授予用户对表中列的查询权限

授予用户SQLUser2对数据库sales的customers表的列cid、cname的查询权限。

①用SQLUser2登录账户登录到MySQL,在“Schemas”选项卡中,看到没有任何数据库权限存在,如图9.19所示,表示登录账号SQLUser2不具备对customers表的任何权限。

图示

图9.19 SQLUser2不具备对customers表的任何权限

②以root身份重新登录到MySQL,单击左上角按钮 图示,新建查询窗口。

③在查询窗口中输入如下SQL语句:

GRANT SELECT(cid,cname) ON sales.customers
TO 'SQLUser2'@'localhost'

④单击工具栏中的 图示 图标,执行上面的SQL语句,如图9.20所示。

图示

图9.20 SQL授予用户SQLUser2查询列的权限

⑤验证。以SQLUser2登录账户登录到MySQL。在“Schemas”选项卡中展开“Schemas”→“sales”→“Tables”,发现已经存在customers表。在查询窗口中输入如下SQL语句,如果执行结果如图9.21所示,则表示用户SQLUser2不具备对数据库sales的customers表的列city、discnt的查询权限。

SELECT city,discnt FROM sales.customers;

图示

图9.21 验证结果1

⑥在查询窗口中输入如下SQL语句,如果执行结果如图9.22所示,则表示用户SQLUser2已经具备对数据库sales的customers表的列cid、cname的查询权限。

SELECT cid,cname FROM sales.customers;

图示

图9.22 验证结果2

(4)使用SQL语句授予用户视图查询权限

授予用户SQLUser2对数据库sales的products表中库存城市为Dallas的产品的编号、名称和单价进行查询的权限,并进行验证。

①用SQLUser2登录账户登录到MySQL,在“Schemas”选项卡中看不到products表, 表示登录账号SQLUser2不具备对products表的任何权限。

②以root身份重新登录到MySQL,单击左上角按钮 图示,新建查询窗口中输入如下SQL语句:(https://www.daowen.com)

CREATE VIEW pview AS SELECT pid,pname,price
FROM products WHERE city='Dallas';

③单击工具栏中的 图示 图标,执行上面的SQL语句,创建一个视图,视图的数据即是库存城市为“Dallas”的产品的编号、名称和单价,查询pview视图结果如图9.23所示。

图示

图9.23 查询pview视图

④对该视图分配权限,新建查询窗口中输入如下SQL语句并执行:

GRANT SELECT ON pview TO 'SQLUser2'@'localhost'

⑤验证。以SQLUser2登录账户登录到MySQL。展开“Schemas”→“sales”→ “Tables could not be fetched”,没有显示products表,说明对products表没有权限,再展开“Schemas”→“sales”→“Views could not be fetched”,显示pview,对该视图进行查询,显示相应结果,如图9.24所示。

图示

图9.24 权限分配后查询pview视图

(5)使用图形界面工具授予用户查询、更新和插入权限

授予用户SQLUser2对数据库sales中表的查询、更新和插入权限,并进行验证。

①用SQLUser2登录账户登录到MySQL,在“Schemas”选项卡中看不到orders表,如图9.25所示,表示登录账号SQLUser2不具备对orders表的任何权限。以root身份重新登录到MySQL。

图示

图9.25 SQLUser2不具备对orders表的任何权限

②单击“Administration”选项卡“MANAGEMENT”栏中的“Users and Privileges”,在“Users and Privileges”页的“User Accounts”部分,单击SQLUser2,再选择“Schema Privileges”,然后单击“Add Entry”按钮,如图9.26所示。

图示

图9.26 “Users and Privileges”页

③显示“New Schema Privilege Definition”对话框,选择“Selected schema”,在下拉列表中选择“sales”,然后单击“OK”按钮,如图9.27所示。

图示

图9.27 “New Schema Privilege Definition”对话框

④在“Users and Privileges”页,勾选“SELECT”“INSERT”和“UPDATE”,然后单击“Apply”按钮,如图9.28所示。

图示

图9.28 授予用户SQLUser2用户SELECT、INSERT、UPDATE权限

⑤验证。以SQLUser2登录账户登录到MySQL。再展开“Schemas”→“sales”→ “Tables”,对sales数据库下的orders表、agents等表进行查询、更新和插入操作,均能成功执行,即表示用户SQLUser2已经具备对数据库sales中表的查询、更新和插入权限。

(6)使用SQL撤销所有操作权限

撤销登录账号SQLUser1的数据库所有操作权限。

①以root管理员身份登录到MySQL。

②在图标菜单中单击第一个图标 图示,新建一个查询窗口。

③在查询窗口中输入如下SQL语句:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'SQLUser1'@'localhost'

④单击工具栏中的 图示 图标,执行上面的SQL语句,如图9.29所示。

图示

图9.29 撤销用户SQLUser1的所有权限

(7)使用SQL撤销数据库的查询权限

撤销登录账号SQLUser2的查询表中列的权限。

①在图标菜单中单击第一个图标 图示,新建一个查询窗口。

②在查询窗口中输入如下SQL语句:

REVOKE SELECT(cid,cname) ON sales.customers
FROM 'SQLUser2'@'localhost'

③单击工具栏中的 图示 图标,执行上面的SQL语句,如图9.30所示。

图示

图9.30 撤销用户SQLUser2的查询表中列的权限

④验证。再次执行查询cid,cname的操作,发现无法执行,即用户SQLUser2没有权限,证明权限删除成功,如图9.31所示。

图示

图9.31 验证结果

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)