实训目的:
1、理解用户与模式的概念,掌握oracle中用户管理的基本方法
2、理解系统权限、对象权限的概念,掌握分配权限的方法
3、理解角色的概念,掌握角色的应用方法
实训内容:
一、用户管理与应用
1、查看用户与模式
在Oracle数据库中,可以使用以下SQL命令来查看所有用户和他们的默认表空间(模式):
SELECT * FROM DBA_USERS
如果你没有DBA权限,但想当前用户有权限查看的所有用户的信息,可以使用:
SELECT * FROM ALL_USERS
如果你没有DBA权限,但想查看当前用户的信息,可以使用:
SELECT * FROM USER_USERS
eg:
2、创建用户
create user
: 这是创建用户的SQL命令。bcl
: 这是新用户的用户名。identified by bbccll
: 这部分指定了用户的密码为bbccll
。
create user bcl identified by bbccll;
3、给予新用户基本权限 create session , create any table
grant
: 这是用于授予权限的SQL命令。create session
: 允许用户连接到数据库。create any table
: 允许用户在任何用户的模式下创建表(这是一个高级权限,通常不建议随意授予)。
grant create session , create any table to bcl;
4、调整用户的密码、锁定状态、配额等
密码修改:
你可以使用ALTER USER
命令来修改用户的密码。
alter user bcl identified by new_password;
锁定/解锁用户:
使用ACCOUNT LOCK
或ACCOUNT UNLOCK
来锁定或解锁用户。
-- 锁定用户
alter user bcl account lock;
-- 解锁用户
alter user bcl account unlock;
配额管理:
在Oracle中,你可以为用户设置表空间配额(tablespace quota),限制他们在特定表空间中使用的空间量。
-- 为用户设置表空间配额
alter user bcl quota 100M on tablespace_name;
-- 移除表空间配额
alter user bcl quota unlimited on tablespace_name; -- 或指定具体的空间量
5、删除用户!!
命令解释:
drop user
: 这是用于删除用户的SQL命令。
SQL语句:
注意:在删除用户之前,你需要确保该用户没有拥有任何对象(如表、视图、序列等),或者你需要使用CASCADE
选项来删除用户及其所有对象。
-- 删除用户及其所有对象
drop user bcl cascade;
-- 如果用户没有对象,可以直接删除
drop user bcl;
二、权限管理与应用
系统权限system privilege
对象权限object privilege 多 on objectName
1、授予或回收系统权限
系统权限(System Privilege):
- 授予或回收系统权限使用
GRANT
和REVOKE
命令。
授予系统权限
grant create session , create any table to bcl;
回收系统权限
revoke create table from bcl;
2、授予或回收对象权限
授予对象权限
假设我们有一个表my_table
,并且想要授予用户bcl
对该表的查询(SELECT
)和插入(INSERT
)权限:
grant select, insert on my_table to bcl;
回收对象权限
如果我们想从用户bcl
那里回收对my_table
的查询权限:
revoke select on my_table from bcl;
3、转交管理权限或收回管理权限(权限传递)
在Oracle数据库中,权限的转交通常是指将权限的管理权授予另一个用户或角色,这样他们就可以代表原权限持有者来授予或回收权限。这通常涉及到ADMIN OPTION的使用。以下是如何进行权限传递的SQL语句示例:
授予管理权限:当授予一个用户或角色权限,并希望他们能将这些权限转交给其他人时,可以使用ADMIN OPTION。
-- 授予用户bcl创建会话的系统权限,并允许其转交给其他用户
GRANT CREATE SESSION TO bcl WITH ADMIN OPTION;
-- 授予角色BCL对my_table的SELECT和INSERT权限,并允许其转交给其他用户或角色
GRANT SELECT, INSERT ON my_table TO BCL WITH ADMIN OPTION;
收回管理权限:如果需要收回之前授予的转交权限,可以使用REVOKE命令,同时指定CASCADE CONSTRAINTS,以确保所有通过该用户或角色间接授予的权限也被收回。
-- 收回用户bcl转交CREATE SESSION权限的能力
REVOKE CREATE SESSION FROM bcl CASCADE;
-- 收回角色BCL转交对my_table的SELECT和INSERT权限的能力
REVOKE SELECT, INSERT ON my_table FROM BCL CASCADE CONSTRAINTS;
三、角色管理与应用
role 一系列权限的命名集合,目的是简化权限管理的复杂性
1、创建角色
create role BCL;
2、将各类权限放入角色
grant create session, create table to BCL;
3、将角色授予某用户
grant BCL to bcl;