Oracle数据库的用户是连接数据库、操作数据库对象的主体,不同用户根据预设的职责和权限划分,承担着不同的功能,理解各类用户的概念和特点是做好数据库权限管理的基础。

Oracle用户的核心概念
Oracle用户本质上是一个数据库级别的身份标识,每个用户都拥有独立的用户名称、认证方式、默认表空间和权限集合。用户通过用户名和密码登录数据库后,只能在自身被授权的范围内执行操作,无法直接访问其他用户未被共享的对象。
用户和模式(Schema)在Oracle中是强绑定的关系,创建用户时会自动生成同名的模式,用户创建的所有数据库对象(表、视图、存储过程等)默认都存储在该模式下。
常见Oracle用户分类及特点
1. 系统预定义用户
系统预定义用户是Oracle数据库安装时自动创建的默认用户,这类用户通常拥有极高的权限,用于完成数据库的管理、维护和核心功能支撑,常见的系统用户及特点如下:
| 用户名称 | 核心权限 | 主要用途 | 使用注意事项 |
|---|---|---|---|
| SYS | 拥有数据库所有权限,是数据库中权限最高的用户,甚至可以修改数据库的核心数据字典 | 数据库实例启动关闭、核心参数修改、数据字典维护 | 日常操作尽量不要使用,避免误操作导致数据库损坏 |
| SYSTEM | 拥有DBA角色权限,可完成大部分数据库管理操作,但无法修改部分核心数据字典 | 创建普通用户、分配权限、日常数据库运维管理 | 比SYS权限低,适合作为日常管理操作的主账号 |
| SCOTT | 仅拥有基础的对象操作权限,自带EMP、DEPT等测试表 | 数据库学习、基础SQL语法测试 | 默认是锁定状态,需要手动解锁才能使用 |
2. 普通业务用户
普通业务用户是管理员根据实际业务需求手动创建的用户,这类用户的特点如下:
- 权限范围由管理员按需分配,通常仅拥有对应业务相关的表、视图的操作权限,不具备数据库管理权限
- 拥有独立的默认表空间和临时表空间,业务数据存储在自身模式下,和其他业务用户的数据相互隔离
- 可以按需被授予CONNECT、RESOURCE等基础角色,也可以单独授予某张表的SELECT、INSERT等细粒度权限
3. 公共用户(针对Oracle 12c及以上多租户架构)
公共用户是在CDB(容器数据库)层面创建的用户,特点是可以访问CDB下的所有PDB(可插拔数据库),通常用于完成跨PDB的统一管理工作,权限范围由创建时指定,不会自动拥有所有PDB的全部权限。
不同用户的权限管理示例
创建普通业务用户并分配权限是日常运维中的常见操作,以下是完整的操作示例:
-- 创建普通业务用户,指定默认表空间和临时表空间 CREATE USER biz_user IDENTIFIED BY "BizPass123" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; -- 授予用户连接数据库的基础权限 GRANT CONNECT TO biz_user; -- 授予用户创建表、序列等基础对象的权限 GRANT RESOURCE TO biz_user; -- 单独授予用户对scott用户下emp表的查询权限 GRANT SELECT ON scott.emp TO biz_user; -- 查看用户拥有的系统权限 SELECT * FROM dba_sys_privs WHERE grantee = 'BIZ_USER'; -- 查看用户拥有的对象权限 SELECT * FROM dba_tab_privs WHERE grantee = 'BIZ_USER';
用户管理的最佳实践
在实际使用Oracle数据库时,针对用户管理可以遵循以下原则:
- 禁止使用SYS、SYSTEM等系统用户作为业务连接账号,避免权限过高带来安全风险
- 普通业务用户遵循最小权限原则,仅授予完成业务功能必需的权限,不要随意授予DBA角色
- 定期审计用户权限,及时回收不再使用的用户的权限,删除长期不用的闲置用户
- 多租户架构下,优先使用本地用户管理单个PDB的业务,减少公共用户的使用范围
注意:修改系统预定义用户的密码时,需要使用ALTER USER语句,且密码要符合Oracle的密码复杂度要求,避免使用过于简单的密码。