用户管理
表空间、表、用户三者之间关系
一个用户可以使用多个表空间,但是一个用户只能有一个默认的表空间;
用户建表的时候,可以指定表空间去创建,也可以使用默认表空间;
用户使用表空间的时候,需要配额
表就是段(segement),普通表
一个数据库中可以建很多用户,用户之间是隔离的,不同用户之下可以有同名的表。
# 新建用户
create user test identified by <password>;
# 赋予用户连接权限
grant connect to test;
# 赋予用户资源的权限
grant resource to test;
# 用户登录
sqpplus test/<password>
# 创建用户时指定默认表空间和临时表空间
create user test identified by <password> default tablespace test_tbs temporary tablespace temp_test;
# 有两种情况下使用默认表空间
# 创建表时没有指定表空间
create table ces(id number, name varchar2(20));
# 创建表时制定了默认表空间
create table ces(id number, name varchar2(20)) tablespace users;
# 查看用户的默认表空间和临时表空间
select USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;
# 修改默认表空间
alter user test default tablespace test_tbs_new;
# 修改用户密码
alter user test identified by <password_new>;
权限和角色
系统权限
系统权限是允许用户执行特定数据库操作的高级权限。这些权限通常由数据库管理员(DBA)管理,并授予给用户或角色。
# 角色拥有的系统权限
ROLE_SYS_PRIVS
# 用户拥有的系统权限
DBA_SYS_PRIVS
对象权限
对象权限是允许用户对特定数据库对象(如表、视图、序列、存储过程等)执行操作的权限。与系统权限不同,对象权限是针对特定对象的。
# 角色拥有的系统权限
ROLE_SYS_PRIVS
# 用户拥有的对象权限
DBA_TAB_PRIVS
角色权限
角色权限是通过角色(Role)来管理和分配权限的一种机制。角色是一个权限的集合,可以将多个系统权限或对象权限授予角色,然后将角色授予用户,从而简化权限管理。
赋权
# WITH ADMIN OPTION
权限授予/取消不级联。被授予者可以将权限授予他人,但如果权限被收回,其他人仍保留该权限。
# WITH GRANT OPTION
权限授予/取消级联。被授予者可以将权限授予他人,但如果权限被收回,其他人的权限也会被收回。
grant create table to A;
A是不能再把create table的权限赋给B的
grant create table to A with admin option;
A可以把权限赋予B,
revoke create table from A
B的create table权限保留。
grant create table to A with grant option;
A可以把权限赋予B,
revoke create table from A
B的create table权限级联回收。
ROLE_SYS_PRIVS 角色拥有的系统权限
ROLE_TAB_PRIVS 角色拥有的对象权限
ROLE_ROLE_PRIVS 角色拥有的角色
DBA_SYS_PRIVS 用户拥有的系统权限
DBA_TAB_PRIVS 用户拥有的对象权限
DBA_ROLE_PRIVS 用户拥有的角色
system_privilege_map 系统权限列表
DBA_ROLES 所有角色
USER_TAB_PRIVS_MADE 查询授出去的对象权限(通常是属主自己查)
USER_TAB_PRIVS_RECD 用户拥有的对象权限
USER_COL_PRIVS_MADE 用户分配出去的列的对象权限
USER_COL_PRIVS_RECD 用户拥有的关于列的对象权限