Oracle容器数据库的用户名和密码是什么?如何正确获取并设置?
- 内容介绍
- 文章标签
- 相关推荐
Oracle 容器数据库与可插拔数据库的使用者管理往往让管理员头疼不已。话说回来,是在部署新程序或迁移旧程序时常见的痛点包括:无法确认当前使用者是属于 CDB 还是 PDB、默认密码不明确、账户被锁导致无法登录、密码策略配置不当等。
1️⃣ 了解 Oracle 容器数据库结构
CDB是一个虚拟数据库实例,内部可以包含多个 PDB。关键点:
- CDB$ROOT 是容器根级别的唯一使用者,用于管理整个 CDB。
- 每个 PDB 有自己的本地使用者空间,互相隔离。
- 共享使用者在整个 CDB 内可见,但只能访问被授权的对象。
1.1 使用者类型概览
| 类型 | 作用范围 | 示例账号 |
|---|---|---|
| CDB 超级使用者 | CDB$ROOT 全局管理 | SYS / SYSTEM / SYS$ROOT |
| PDB 超级使用者 | PDB 内部完全控制 | P$SYS / SYSTEM@PDB1 |
| 共享使用者 | CDB 全局可见。但权限受限于角色授予 | MGR_USER |
| 本地使用者 | 仅在创建时所在的 PDB 内部可见 | AUDIT_USER |
| 应用程序使用者d | 业务层访问权限,按需授权d | BILLING_APP d> |
2️⃣ 默认账号与初始密码设置流程
Oracle 在安装时会生成若干默认账号。至于最常用的有,
-
SYS – 程序管理员
- 初始密码:
<安装时设置>。安装后第一次登录会强制修改。 - SYSTEM – 数据库管理员 - 初始密码:同 SYS 或者 installer 设定。
- SRC – 程序资源控制 - 初始密码:同 SYS。
- BIP* – BI 相关服务账号。- 初始密码:同 SYS。
- BIP* – BI 服务相关 - 初始密码:同 SYS。
- BIP* - BI 相关服务 - 初始密码:同 SYS。
- BIP* - BI 服务相关 - 初始密码:同 SYS。 .
⚠️ **安全提醒** 默认账号在生产环境中务必立刻更改为强随机密码,并启用账户锁定策略/密码历史功能防止暴力。话说回来,
3️⃣ 如何以 Sysdba 身份登录并进行账号解锁 / 密码修改?
登录步骤示例
# 打开命令行窗口
sqlplus / as sysdba
# 成功后会出现 SQL> 提示符,即已获得 Sysdba 权限
SQL>
}
解锁被锁定的普通使用者并重置密码:
# 解锁账户
ALTER USER ACCOUNT UNLOCK;# 重置为新强随机口令
ALTER USER IDENTIFIED BY ;# 可选:立即生效并激活新口令:
ALTER USER PASSWORD EXPIRE;ALTER USER ;-- 登录后会提示需要更改旧口令
# 完成后返回 SQL>
SQL>
}
*注意事项*
- "ACCOUNT UNLOCK;" 必须带分号,老实说,使用英文半角字符;否则报错,"SQL command not properly ended."
- "IDENTIFIED BY" 后面不能出现空格或特殊符号除非用引号包围;建议使用至少12位混合字符。
- "PASSWORD EXPIRE" 用于强制下次登录立即更改口令。
- "ALTER USER …," 后面加 ";",不加也能执行但建议规范写法。
查询当前 CWD 下所有使用者名及其哈希值:
# 在 CRED 层查询所有使用者名和哈希值:
SELECT username。password,created,last_login,account_status,lock_date
FROM dba_users;# 若要查看特定 PBD 的信息,需要先切换到对应容器:
ALTER SESSION SET CONTAINER = pdb_name;不过,SELECT username,password,created。
last_login,account_status
FROM dba_users;# 注释: 以上查询仅返回哈希字符串,Oracle 不允许以明文读取存储的密钥。SQL>
4️⃣ 创建新的共享或本地使用者实战教程
在 C$ROOT 创建共享使用者:
# 切换到 C$ROOT 容器:
ALTER SESSION SET CONTAINER = cdb$root;# 创建共享使用者:
CREATE USER my_shared_user IDENTIFIED BY MyStrongPass!123,# 授权基本角色,例如 CONNECT + RESOURCE:
GRANT CONNECT。RESOURCE TO my_shared_user;# 如需跨 PBD 使用,请再授予对应角色或对象访问权限:
GRANT SELECT ANY TABLE TO my_shared_user;
在特定 PBD 创建本地使用者:
# 切换到目标 PBD:
ALTER SESSION SET CONTAINER = pdb_custom;# 创建本地使用者:
CREATE USER app_user IDENTIFIED BY AppUserPass!456,# 授权该 PBD 的资源,例如 CREATE SESSION 与 CREATE TABLES:
GRANT CREATE SESSION TO app_user;GRANT CREATE TABLE TO app_user;
*常见错误*
- "<>",空格或大小写错误导致 CREATE USER 失败;请使用正确大小写且无空格。
- "TNS_ADMIN"> /etc/oracle/network/admin/>;老实说,未配置好 TNSNames。可以使用 *sqlplus / as sysdba* 或 *sqlplus scott/tiger@orcl* 测试连接。
5️⃣ 强化安全性—密码策略与常用方法
❗**不要忽视**!在生产环境里一条好的安全政策能阻止数十万次暴力攻击。不过,
| 策略项 | 建议设置范围 | -->-->-->-->-->--> --> --> ---> ---> ---> --->--->--->--->--->--->--->--->----'>-- ->' '-->
|---|---|
| Password Complexity Policy | '至少12位混合大小写数字特殊字符' |
| Password Expiration | '90天' |
| Password History | '10' |
| User Lockout Threshold | '5 次错误尝试后自动锁定' |
| User Lockout Duration | '30 分钟' |
💡 小贴士:
- Keeps Oracle instance secure by enforcing strong complexity.
- Avoid using common words like "password"。"admin",or "oracle". Use a passphrase.
sql
ALTER SESSION SET CONTAINER = pdb_name;
再运行 SELECT username FROM dba_users WHERE account_status='OPEN'; 查看活跃账户。
对于多实例部署。可批量脚本化上述命令,以避免手工操作误差。
🔐 最终目标:确保所有账号都有唯一、复杂且经周期性更改的口令,而且任何未授权尝试都会被及时记录与阻断。
✅ 完成后你可以通过 sqlplus username/password@orcl 或 JD娱乐 驱动正常连接。🚨 若遇到“ORA‑28009: connection as sysdba is not supported by this server”,检查 $ORACLE_HOME/dbs/ 下是否有 spfile*.ora 并确认 ORACLE_SID 正确。
🚀 对于大型团队,可考虑利用 Oracle Enterprise Manager 或 Ansible 自动化脚本完成一次性创建及策略配置。
🎯 :
- 确认你是在正确容器内操作。- 永远不要把默认口令留在明文文件中;尽快修改并记录安全存储位置。- 使用 SYS/AS SYSDBA 登录后即可解锁、更改口令还有查询敏感信息,但别忘了随后撤销 Sys 权限来保持最小权限原则。其实,
如还有疑问。可参考官方文档《Oracle Database Security Guide》或联系 DBA 专家进行进一步排查。
🎉 Happy DB administration!
Oracle 容器数据库与可插拔数据库的使用者管理往往让管理员头疼不已。话说回来,是在部署新程序或迁移旧程序时常见的痛点包括:无法确认当前使用者是属于 CDB 还是 PDB、默认密码不明确、账户被锁导致无法登录、密码策略配置不当等。
1️⃣ 了解 Oracle 容器数据库结构
CDB是一个虚拟数据库实例,内部可以包含多个 PDB。关键点:
- CDB$ROOT 是容器根级别的唯一使用者,用于管理整个 CDB。
- 每个 PDB 有自己的本地使用者空间,互相隔离。
- 共享使用者在整个 CDB 内可见,但只能访问被授权的对象。
1.1 使用者类型概览
| 类型 | 作用范围 | 示例账号 |
|---|---|---|
| CDB 超级使用者 | CDB$ROOT 全局管理 | SYS / SYSTEM / SYS$ROOT |
| PDB 超级使用者 | PDB 内部完全控制 | P$SYS / SYSTEM@PDB1 |
| 共享使用者 | CDB 全局可见。但权限受限于角色授予 | MGR_USER |
| 本地使用者 | 仅在创建时所在的 PDB 内部可见 | AUDIT_USER |
| 应用程序使用者d | 业务层访问权限,按需授权d | BILLING_APP d> |
2️⃣ 默认账号与初始密码设置流程
Oracle 在安装时会生成若干默认账号。至于最常用的有,
-
SYS – 程序管理员
- 初始密码:
<安装时设置>。安装后第一次登录会强制修改。 - SYSTEM – 数据库管理员 - 初始密码:同 SYS 或者 installer 设定。
- SRC – 程序资源控制 - 初始密码:同 SYS。
- BIP* – BI 相关服务账号。- 初始密码:同 SYS。
- BIP* – BI 服务相关 - 初始密码:同 SYS。
- BIP* - BI 相关服务 - 初始密码:同 SYS。
- BIP* - BI 服务相关 - 初始密码:同 SYS。 .
⚠️ **安全提醒** 默认账号在生产环境中务必立刻更改为强随机密码,并启用账户锁定策略/密码历史功能防止暴力。话说回来,
3️⃣ 如何以 Sysdba 身份登录并进行账号解锁 / 密码修改?
登录步骤示例
# 打开命令行窗口
sqlplus / as sysdba
# 成功后会出现 SQL> 提示符,即已获得 Sysdba 权限
SQL>
}
解锁被锁定的普通使用者并重置密码:
# 解锁账户
ALTER USER ACCOUNT UNLOCK;# 重置为新强随机口令
ALTER USER IDENTIFIED BY ;# 可选:立即生效并激活新口令:
ALTER USER PASSWORD EXPIRE;ALTER USER ;-- 登录后会提示需要更改旧口令
# 完成后返回 SQL>
SQL>
}
*注意事项*
- "ACCOUNT UNLOCK;" 必须带分号,老实说,使用英文半角字符;否则报错,"SQL command not properly ended."
- "IDENTIFIED BY" 后面不能出现空格或特殊符号除非用引号包围;建议使用至少12位混合字符。
- "PASSWORD EXPIRE" 用于强制下次登录立即更改口令。
- "ALTER USER …," 后面加 ";",不加也能执行但建议规范写法。
查询当前 CWD 下所有使用者名及其哈希值:
# 在 CRED 层查询所有使用者名和哈希值:
SELECT username。password,created,last_login,account_status,lock_date
FROM dba_users;# 若要查看特定 PBD 的信息,需要先切换到对应容器:
ALTER SESSION SET CONTAINER = pdb_name;不过,SELECT username,password,created。
last_login,account_status
FROM dba_users;# 注释: 以上查询仅返回哈希字符串,Oracle 不允许以明文读取存储的密钥。SQL>
4️⃣ 创建新的共享或本地使用者实战教程
在 C$ROOT 创建共享使用者:
# 切换到 C$ROOT 容器:
ALTER SESSION SET CONTAINER = cdb$root;# 创建共享使用者:
CREATE USER my_shared_user IDENTIFIED BY MyStrongPass!123,# 授权基本角色,例如 CONNECT + RESOURCE:
GRANT CONNECT。RESOURCE TO my_shared_user;# 如需跨 PBD 使用,请再授予对应角色或对象访问权限:
GRANT SELECT ANY TABLE TO my_shared_user;
在特定 PBD 创建本地使用者:
# 切换到目标 PBD:
ALTER SESSION SET CONTAINER = pdb_custom;# 创建本地使用者:
CREATE USER app_user IDENTIFIED BY AppUserPass!456,# 授权该 PBD 的资源,例如 CREATE SESSION 与 CREATE TABLES:
GRANT CREATE SESSION TO app_user;GRANT CREATE TABLE TO app_user;
*常见错误*
- "<>",空格或大小写错误导致 CREATE USER 失败;请使用正确大小写且无空格。
- "TNS_ADMIN"> /etc/oracle/network/admin/>;老实说,未配置好 TNSNames。可以使用 *sqlplus / as sysdba* 或 *sqlplus scott/tiger@orcl* 测试连接。
5️⃣ 强化安全性—密码策略与常用方法
❗**不要忽视**!在生产环境里一条好的安全政策能阻止数十万次暴力攻击。不过,
| 策略项 | 建议设置范围 | -->-->-->-->-->--> --> --> ---> ---> ---> --->--->--->--->--->--->--->--->----'>-- ->' '-->
|---|---|
| Password Complexity Policy | '至少12位混合大小写数字特殊字符' |
| Password Expiration | '90天' |
| Password History | '10' |
| User Lockout Threshold | '5 次错误尝试后自动锁定' |
| User Lockout Duration | '30 分钟' |
💡 小贴士:
- Keeps Oracle instance secure by enforcing strong complexity.
- Avoid using common words like "password"。"admin",or "oracle". Use a passphrase.
sql
ALTER SESSION SET CONTAINER = pdb_name;
再运行 SELECT username FROM dba_users WHERE account_status='OPEN'; 查看活跃账户。
对于多实例部署。可批量脚本化上述命令,以避免手工操作误差。
🔐 最终目标:确保所有账号都有唯一、复杂且经周期性更改的口令,而且任何未授权尝试都会被及时记录与阻断。
✅ 完成后你可以通过 sqlplus username/password@orcl 或 JD娱乐 驱动正常连接。🚨 若遇到“ORA‑28009: connection as sysdba is not supported by this server”,检查 $ORACLE_HOME/dbs/ 下是否有 spfile*.ora 并确认 ORACLE_SID 正确。
🚀 对于大型团队,可考虑利用 Oracle Enterprise Manager 或 Ansible 自动化脚本完成一次性创建及策略配置。
🎯 :
- 确认你是在正确容器内操作。- 永远不要把默认口令留在明文文件中;尽快修改并记录安全存储位置。- 使用 SYS/AS SYSDBA 登录后即可解锁、更改口令还有查询敏感信息,但别忘了随后撤销 Sys 权限来保持最小权限原则。其实,
如还有疑问。可参考官方文档《Oracle Database Security Guide》或联系 DBA 专家进行进一步排查。
🎉 Happy DB administration!

