在Oracle数据库的使用过程中,我们常常需要在PLSQL环境中创建新的数据库用户,并为其分配对应的操作权限,这是数据库权限管理的基础操作。下面先通过一张示意图了解整体操作流程:

一、创建用户的基本语法
在PLSQL中创建用户需要使用CREATE_USER语句,最基础的创建语法如下,需要注意用户名的命名规则:用户名不能超过30个字符,不能以数字开头,不能使用Oracle的保留关键字。
-- 创建用户的基本语法,用户名是test_user,密码是test123456 CREATE USER test_user IDENTIFIED BY test123456;
如果希望用户密码有过期策略,或者限制用户的连接数,可以在创建时添加对应的参数,示例如下:
-- 创建用户并设置密码过期,同时限制最大连接数为5 CREATE USER test_user IDENTIFIED BY test123456 PASSWORD EXPIRE -- 密码立即过期,首次登录需要修改密码 CONNECT 5; -- 最大并发连接数为5
二、为用户授予权限
新创建的用户默认没有任何权限,无法登录数据库也无法操作数据,需要先授予基础权限,再根据需要授予对象权限或者系统权限。
1. 授予基础登录权限
首先要授予用户CREATE_SESSION权限,否则用户无法连接到数据库,语法如下:
-- 授予test_user连接数据库的权限 GRANT CREATE SESSION TO test_user;
2. 授予表空间使用权限
如果用户需要创建表等对象,还需要授予表空间的使用权限,避免后续创建对象时报空间不足的错误:
-- 授予test_user使用users表空间的权限,并设置为默认表空间 ALTER USER test_user DEFAULT TABLESPACE users; GRANT UNLIMITED TABLESPACE TO test_user; -- 允许无限制使用表空间
3. 授予对象权限
如果希望用户能操作其他用户的表、视图等对象,需要授予对应的对象权限,比如查询、插入、更新、删除权限:
-- 授予test_user查询hr用户下employees表的权限 GRANT SELECT ON hr.employees TO test_user; -- 授予test_user对hr.employees表的增删改查所有权限 GRANT ALL ON hr.employees TO test_user;
4. 授予系统权限
如果希望用户能创建自己的表、视图等对象,需要授予对应的系统权限:
-- 授予test_user创建表的权限 GRANT CREATE TABLE TO test_user; -- 授予test_user创建视图的权限 GRANT CREATE VIEW TO test_user;
三、权限回收与用户删除
如果后续需要调整用户的权限,或者不再使用该用户,可以使用以下操作:
1. 回收权限
回收权限使用REVOKE语句,语法和授权类似:
-- 回收test_user的CREATE TABLE权限 REVOKE CREATE TABLE FROM test_user; -- 回收test_user对hr.employees表的查询权限 REVOKE SELECT ON hr.employees FROM test_user;
2. 删除用户
删除用户时需要注意,如果用户下已经有对象,需要添加CASCADE参数,否则会删除失败:
-- 删除test_user用户,同时删除该用户下的所有对象 DROP USER test_user CASCADE;
四、常见注意事项
- 创建用户和授权操作需要有对应的管理员权限,比如DBA角色,普通用户无法执行这些操作
- 密码设置建议包含大小写字母、数字和特殊字符,符合Oracle的密码复杂度要求
- 授权时遵循最小权限原则,只给用户分配必要的权限,避免权限过大带来安全风险
- 如果给用户授予了DBA角色,用户将拥有几乎所有系统权限,生产环境不建议随意授予
注意:所有操作建议在测试环境先验证,确认无误后再在正式环境执行,避免误操作影响现有业务。
OraclePLSQL创建用户用户授权CREATE_USER修改时间:2026-05-25 00:31:27