目录
用户:
安装Oracle时创建了预定义用户,参考:
Managing Security for Oracle Database Users
其中sys、system是常用的,权限最大的用户,它们都有DBA角色。
Oracle是没有schema概念的,用户名即schema。
sys用户schema下存储数据库核心数据字典。
system用户schema下存储其它系统数据字典。
local user是针对PDB的。
创建、修改、删除用户的例子SQL语句:
CREATE USER jward
IDENTIFIED BY password
DEFAULT TABLESPACE example
QUOTA 10M ON example
TEMPORARY TABLESPACE temp
QUOTA 5M ON system
PASSWORD EXPIRE;ALTER USER andy IDENTIFIED BY password;
DROP USER jward;
用户可能是锁住的,需要解锁:
alter user hr identified by hr account unlock;
用户的密码是有一个超时期限的,默认是180天。
这样创建用户后,用户没有任何权限,还需要给他赋予权限,才能连接数据库,参考:
Managing Security for Oracle Database Users
用户名是大小写不敏感的,除非用双引号括起来。
所有用户的默认表空间是SYSTEM表空间。
用户信息数据字典,参考
Managing Security for Oracle Database Users
其中常用的有:ALL_USERS、DBA_USERS
角色:
角色是一组权限。
安装Oracle时创建了预定义用户角色,参考:
Configuring Privilege and Role Authorization
其中DBA是常用的权限最大的角色,还有CONNECT、RESOURCE。
还有很特殊的角色PUBLIC,表示所有用户,常用于赋权,参考:
Configuring Privilege and Role Authorization
角色相当于一个用户,角色不属于某个用户的,而是数据库全局的,所以创建角色时,名称全数据库范围内不能与已有用户名、角色名重复。
创建角色SQL语句:
CREATE ROLE salesclerk;
GRANT clerk_admin TO package psmith.checkstats_pkg;
REVOKE clerk_admin FROM package psmith.checkstats_pkg;
GRANT clerk_admin TO user1;
GRANT role1 TO role2;
DROP ROLE clerk;
角色创建完后,并没有任何权限,要像给用户赋权一样,给角色赋予权限,然后就可以用这个角色,给其它用户赋权。
关于角色,还有其它知识点,例如创建角色时的密码,用户修改角色等。
角色信息数据字典:DBA_ROLES
权限:
权限有许多种,参考:
Configuring Privilege and Role Authorization
主要分系统权限和对象权限,两者赋权语法不同。
系统权限:对整个数据库系统的操作权限,例如:SYSDBA、SYSOPER、CREATE SESSION等。
对象权限:对某个表等对象的操作,例如:grant update (dname,loc) on dept to damon。对象权限可以精确到列(insert/update)。
WITH GRANT OPTION 用于对象权限:
GRANT向用户赋权时,如果增加了WITH GRANT OPTION,则被赋权的用户,可以将这个权限再赋给其它用户或回收。
WITH ADMIN OPTION 用与系统权限:
GRANT向用户赋权时,如果增加了WITH ADMIN OPTION,则被赋权的用户,除了可以将这个权限再赋给其它用户或回收,还可以修改和删除这个权限本身。
参考:
GRANT
常用系统权限:
SYSDBA和SYSOPER是常用管理员权限。
还有一个很特殊的权限ANY,表示任何权限。
参考:Configuring Privilege and Role Authorization
收回权限:
对于级联赋权的收回:
赋权顺序:A -> B -> C -> D (A赋权给B,B赋权给C,C赋权给D)
对象权限: with grant option
对象权限的回收是级联: A 收回 B 的权限, CD 权限也被收回。
回收原则,谁授予谁回收: A 不能直接回收 C 的权限。
scott -> damon -> hr
赋权顺序:A -> B -> C -> D (A赋权给B,B赋权给C,C赋权给D)
系统权限: with admin option
系统权限的回收不是级联的: A 收回 B 的权限, CD 权限还在。
回收原则,只要被授权时有 with admin option, 就可以回收这个权限。
这三者都有common(指整个CDB)和local(指个别PDB)的区别,都有与之相关的创建和操作SQL语句和数据字典。