公用用户和本地用户
代码语言:javascript复制SYS@cdb1> select username,common,con_id from cdb_users
where username in ('SYS','HR');
COMMON 列显示 YES 为公共用户,在所有容器包括将来创建的 PDB 中均存在
COMMON 列显示 NO 为本地用户,仅在当前容器中存在
cdb 中创建公用用户
代码语言:javascript复制创建公共用户 c##user01,设置密码为 oracle
SYS@cdb1> create user c##user01 identified by oracle;
SYS@cdb1> select username,common,con_id from cdb_users
where username in ('SYS','HR','C##USER01');
pdb 中创建本地用户
代码语言:javascript复制pdb 中创建本地用户 user02
SYS@pdb1> create user user02 identified by oracle;
SYS@pdb1> select username,common,con_id from cdb_users
where username in ('SYS','HR','C##USER01','USER02');
公用和本地权限和角色
cdb 中给公用用户授权
代码语言:javascript复制在 cdb 中指定 container=current 进行授权
SYS@cdb1> grant connect to c##user01 container=current;
cdb 有权限登录, pdb 没有权限
sqlplus c##user01/oracle@cdb1
sqlplus c##user01/oracle@pdb1
在 cdb 中授权指定 container=all
SYS@cdb1> grant connect to c##user01 container=all;
cdb pdb 都有权限
pdb 中给本地用户授权
pdb 中对本地用户授权,指定 container=all 报错,指定 container=current 成功
代码语言:javascript复制SYS@pdb1> grant connect to user02 container=all;
SYS@pdb1> grant connect to user02 container=current;