目录
对于 Oracle 数据库初学者来说,掌握用户管理和权限控制是入门的核心技能。本文将系统梳理 Oracle 用户创建、维护、权限分配及口令管理的关键操作,帮助你快速上手。
一、用户的创建与维护
1️⃣创建用户
创建用户的基本语法如下:
sql
create user 用户名 identified by 密码
[default tablespace 默认表空间 temporary tablespace 临时表空间];
例如创建用户firstuser
:
sql
create user firstuser identified by firstuser
default tablespace mydb temporary tablespace temp;
- 参数说明:
identified by
:指定用户登录密码;default tablespace
:用户默认存储数据的表空间(不指定则用系统默认);temporary tablespace
:用户临时数据的表空间(通常用temp
)。
注意:新用户创建后默认没有任何权限,包括登录数据库的权限,需后续手动分配。
2️⃣常用用户维护操作
修改密码:
sql
alter user 用户名 identified by 新密码;
例:
alter user firstuser identified by s
;
(将firstuser
密码改为s
)修改表空间:
sql
alter user 用户名 default tablespace 新默认表空间 temporary tablespace 新临时表空间;
例:
alter user test default tablespace test temporary tablespace testtemp;
删除用户:
sql
drop user 用户名 [cascade];
- 若用户创建过表,必须加
cascade
(级联删除用户及所有对象); - 例:
drop user firstuser cascade;
- 若用户创建过表,必须加
锁定 / 解锁用户:
- 锁定(禁止登录):
alter user 用户名 account lock;
(如alter user SCOTT account lock;
) - 解锁(允许登录):
alter user 用户名 account unlock;
- 锁定(禁止登录):
二、权限管理详解
1️⃣权限的分类
- 系统权限:用户使用数据库的基础权限(如登录、创建表等),针对用户而言;
- 对象权限:用户对其他用户的表、视图等对象的操作权限(如查询、修改),针对具体对象而言。
2️⃣常用系统权限角色
Oracle 通过 “角色”(预定义的权限集合)简化权限分配,核心角色包括:
DBA
:最高权限,可创建数据库结构、管理所有对象;RESOURCE
:允许创建表、视图等实体,但不能创建数据库结构;CONNECT
:仅允许登录数据库,无创建实体权限。
分配建议:
- 普通用户:授予
connect + resource
; - 管理员用户:授予
dba + connect + resource
。
3️⃣权限的授予与收回
<1>授予权限
授予角色权限:
sql
grant 角色1, 角色2... to 用户名;
例:
grant connect, resource to firstuser;
(给firstuser
登录和创建实体权限)授予对象权限:
对其他用户的表 / 视图授权(如允许firstuser
查询scott
的emp
表):sql
grant 操作类型 on 用户名.表名 to 目标用户;
- 允许查询:
grant select on scott.emp to firstuser;
- 允许修改:
grant update on scott.emp to firstuser;
- 允许所有操作:
grant all on scott.emp to firstuser;
- 允许查询:
权限传递:若允许用户将权限转授他人,加
with grant option
:sql
grant select on scott.emp to firstuser with grant option;
<2>收回权限
收回对象权限:
revoke 操作类型 on 用户名.表名 from 用户名;
例:revoke all on scott.emp from firstuser;
(收回firstuser
对emp
表的所有权限)收回角色权限:
revoke 角色 from 用户名;
例:revoke dba from userone;
(收回userone
的DBA
权限)
<3>查询用户权限
通过数据字典查询用户拥有的权限:
sql
select * from dba_role_privs where grantee='用户名';
例:select * from dba_role_privs where grantee='SCOTT';
(查询SCOTT
的权限)
三、口令管理(Profile)
Profile
是 Oracle 中用于设置口令规则和资源限制的工具(类似 “密码策略”),默认有DEFAULT
配置(未指定时自动应用)。
1️⃣Profile 的使用步骤
<1>创建 Profile
定义具体规则,例如:
- 限制登录尝试 3 次失败后锁定 2 天:
sql
create profile lock_account limit failed_login_attempts 3 -- 最大失败次数 password_lock_time 2; -- 锁定天数
- 要求 10 天内必须改密码,宽限期 2 天(宽限期内可登录但会提醒):
sql
create profile myprofile limit password_life_time 10 -- 密码有效期 password_grace_time 2; -- 宽限期
<2>应用 Profile 到用户
sql
alter user 用户名 profile 配置文件名;
例:alter user scott profile lock_account;
(让scott
应用lock_account
规则)
2️⃣删除 Profile
sql
drop profile 配置文件名 [cascade];
- 若 Profile 已分配给用户,需加
cascade
(级联解除关联)。
四、用户连接与退出常用命令
- 切换用户:
conn 用户名/密码 [as sysdba]
(as sysdba
用于管理员登录)
例:conn scott/tiger
(切换到scott
用户) - 注销当前用户:
disc
- 查询当前登录用户:
show user
总结
Oracle 用户管理的核心是 “用户创建 - 权限分配 - 安全控制” 的流程:通过create user
创建用户,用grant
分配权限,借助Profile
保障口令安全。初学者可从基础命令练起,逐步掌握用户与权限的精细化管理,为数据库操作打下坚实基础。