实验内容
本次实验先使用system用户连接
温馨提示:题目要求切换账户登录的时候自己记得切换,本文章只提供相应的SQL语句
在表空间BOOKTBS1(实验4第1题已创建)创建一张表BOOKS,其字段如下::
SQL> create table BOOKS
2 (ISBN varchar(50) primary key,
3 title varchar(50),
4 author varchar(50),
5 cost number(12)) tablespace BOOKTBS1;
表已创建。
在其中插入一条数据('20240101','Oracle数据库管理与开发','李真',48)。
SQL> insert into BOOKS(ISBN,title,author, cost)
2 values ('20240101','Oracle数据库管理与开发','李真',48);
已创建 1 行。
创建一张表CUSTOMERS,其字段如下:
SQL> CREATE TABLE CUSTOMERS (
2 customer_id NUMBER(4) PRIMARY KEY,
3 name VARCHAR2(20) NOT NULL,
4 phone VARCHAR2(50) NOT NULL
5 ) TABLESPACE BOOKTBS1;
表已创建。
1、用户创建与修改
(1)以自己名字首字母创建一个用户(后文称为本人用户),采用口令认证方式,口令自己定义,默认表空间为 USERS表空间,临时表空间为 TEMP,在 USERS 表空间上配额为 10M,在 BOOKTBS1 表空间上的配额为 50M。(下划线填自己名字首字母,下文也是)
SQL> create user _____
2 identified by 000000
3 default tablespace USERS
4 temporary tablespace TEMP
5 quota 10M on USERS
6 quota 50M on BOOKTBS1;
用户已创建。
(2)创建一个名为Tom的用户,采用口令认证方式,口令为Tom,默认表空间为BOOKTBS1表空间,默认临时表空间为TEMP,在USERS表空间上配额为10MB,在BOOKTBS1表空间上的配额为20MB。该用户的初始状态为锁定状态。
SQL> create user Tom
2 identified by Tom
3 default tablespace BOOKTBS1
4 temporary tablespace TEMP
5 account lock
6 quota 10M on USERS
7 quota 20M on BOOKTBS1;
用户已创建。
(3)为方便数据库中用户的登录,为 ORCL 数据库中所有用户授予 CREATE SESSION系统权限。
SQL> grant create session to public;
授权成功。
(4)分别使用 本人用户和 Tom 用户登录 ORCL 数据库,测试是否成功。
使用 SQLPlus 链接数据库,以本人用户和 Tom 用户的身份登录 ORCL 数据库,测试是否成功。
(5)为 Tom 用户帐户解锁,并重新进行登录。
SQL> alter user Tom account UNLOCK;
2、授权与回收操作
(6)切回SYSTEM用户,为本人用户授予 CREATE TABLE、 CREATE VIEW 系统权限,并可以进行权限传递转授;授予books表和customer表上的所有对象权限给本人用户。
SQL> grant create table,create view to ____ with admin option;
授权成功。
SQL> grant all privileges on BOOKS to ____with grant option;
授权成功。
SQL> grant all privileges on CUSTOMERS to ____ with grant option;
授权成功。
(7)切换到本人用户,将 books、customer 表的查询、插入权限以及CREATE VIEW、 CREATE TABLE 的系统权限授予 Tom 用户。
SQL> grant select,insert on system.BOOKS to Tom;
授权成功。
SQL> grant create table,create view to Tom;
授权成功。
(8)使用 Tom 用户连接数据库, 查询 books表中的数据,新增一条书籍数据(自拟)。
SQL> insert into system.books
2 (ISBN,TITLE,AUTHOR,COST)
3 values (20240202,'javac程序设计','张三',52);
已创建 1 行。
(9)使用本人用户回收其授予 Tom 用户的 CREATE VIEW 的系统权限,以及其授予 Tom 用户的在 books 表上的 INSERT 权限。
SQL> revoke create view from Tom;
撤销成功。
SQL> revoke insert on system.BOOKS from Tom;
撤销成功。
(10)使用 system用户登录数据库, 回收本人用户所有具有的 CREATE TABLE系统权限以及在 books 表上 SELECT 权限,思考这时Tom用户的这两项权限是否受影响。
此时,Tom用户的CREATE VIEW权限和在books表上的INSERT权限应该受到影响。
SQL> revoke create table from ____;
撤销成功。
SQL> revoke select on system.BOOKS from ____;
撤销成功。
(11)分别查询 本人用户、Tom 用户所具有的对象权限和系统权限详细信息。
SQL> select * from dba_tab_privs where grantee='____';
SQL> select * from dba_sys_privs where grantee='____';
SQL> select * from dba_tab_privs where grantee='TOM';
SQL> select * from dba_sys_privs where grantee='TOM';
3、角色的创建与授予
(12)使用system用户登录,创建一个角色 seller,不使用口令验证,将 books 表的所有对象权限以及对customers 表的 SELECT 权限授予该角色。
SQL> create role seller;
角色已创建。
SQL> grant all privileges on system.BOOKS to seller;
授权成功。
SQL> grant select on system.CUSTOMERS to seller;
授权成功。
(13)将seller角色授予 Tom 用户,在dba_role_privs中查看当前Tom被授予的角色,在dba_tab_privs中查看seller角色所具有的对象属性。思考此时Tom拥有哪些权限。
此时,Tom拥有的权限将包括:对books表的所有权限(SELECT, INSERT, UPDATE, DELETE等);对customers表的SELECT权限。
SQL> grant seller to Tom;
授权成功。
SQL> select * from dba_role_privs where grantee='TOM';
(14)使用Tom用户,通过SET ROLE 角色名语句启用seller角色,并查询books表中的数据。
SQL> set role seller;
角色集
SQL> select * from system.BOOKS;
4、概要文件使用
(15) 创建一个 bs_profile1 的概要文件, 限定用户的最长会话时间为 30 分钟, 如果连续10 分钟空闲,则结束会话。同时, 限定其口令有效期为 20 天, 连续登录 2 次失败后将锁定账户,10 天后自动解锁。
SQL> create profile bs_profile1 limit
2 CONNECT_TIME 30
3 IDLE_TIME 10
4 PASSWORD_LIFE_TIME 20
5 FAILED_LOGIN_ATTEMPTS 2
6 PASSWORD_LOCK_TIME 10;
配置文件已创建
(16) 将概要文件bs_profile1指定给Tom用户。
SQL> alter user Tom profile bs_profile1;
用户已更改。
(17)利用Tom用户登录ORCL数据库,连续两次输入错误口令,查看执行结果,并使用system查看Tom用户的锁定状态。
SQL> select username,account_status from dba_users where username = 'TOM';