容器内有4个PDB,如何为特定PDB授予权限?
为特定PDB授予权限的操作步骤
前提条件
- 拥有CDB的
SYSDBA或SYSOPER权限 - 目标PDB处于OPEN状态(可通过
SELECT name, open_mode FROM v$pdbs;确认)
操作步骤
- 切换到目标PDB
ALTER SESSION SET CONTAINER = 你的目标PDB名称;
- 针对不同场景授权
- 场景1:创建PDB本地用户并授权
-- 创建本地用户 CREATE USER pdb_local_user IDENTIFIED BY 你的密码; -- 授予基础连接权限 GRANT CREATE SESSION TO pdb_local_user; -- 按需授予其他权限,例如DBA权限(谨慎使用) GRANT DBA TO pdb_local_user; -- 或授予特定对象权限(如读取指定表) GRANT SELECT ON 模式名.表名 TO pdb_local_user;
- 场景2:给CDB级用户授予PDB访问权限
-- 先回到CDB根容器 ALTER SESSION SET CONTAINER = CDB$ROOT; -- 允许CDB用户切换到目标PDB GRANT SET CONTAINER TO cdb_user; -- 再次切换到目标PDB ALTER SESSION SET CONTAINER = 你的目标PDB名称; -- 授予该用户在PDB内的连接权限 GRANT CREATE SESSION TO cdb_user; -- 按需添加其他权限 GRANT SELECT ON 模式名.表名 TO cdb_user;
验证权限
切换到目标PDB后,可通过以下命令验证权限:
-- 查看用户系统权限 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = '你的用户名'; -- 查看用户对象权限 SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = '你的用户名';
内容的提问来源于stack exchange,提问作者dbafix
相关产品推荐
相关产品推荐

