Ubuntu Oracle如何设置用户权限
小樊
37
2025-12-18 18:19:27
Ubuntu 上 Oracle 用户权限设置指南
一 操作系统层用户与目录权限
- 创建用于安装与运行 Oracle 的系统用户和组(仅示例,按实际环境调整路径与组名):
- 创建组:sudo addgroup oinstall、sudo addgroup dba
- 创建用户:sudo useradd -g oinstall -G dba -m -d /home/oracle -s /bin/bash oracle
- 设置密码:sudo passwd oracle
- 创建 Oracle 目录并授权:
- 目录示例:sudo mkdir -p /u01/app/oracle /u01/oradata
- 授权:sudo chown -R oracle:oinstall /u01,必要时 sudo chmod -R 775 /u01
- 如需让 oracle 用户执行管理员命令,可将其加入 sudo 组(谨慎授予):sudo usermod -aG sudo oracle
- 说明:以上为 Ubuntu 主机的系统级准备,便于安装与启停数据库服务;数据库内部的权限与对象权限在下一节通过 SQL 管理。
二 Oracle 数据库层用户与权限
- 以管理员身份登录数据库:sqlplus / as sysdba
- 创建用户并指定默认表空间、临时表空间与配额(示例):
- 创建表空间(示例):
- CREATE TABLESPACE app_ts DATAFILE ‘/u01/oradata/app_ts.dbf’ SIZE 100M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
- CREATE TEMPORARY TABLESPACE app_temp TEMPFILE ‘/u01/oradata/app_temp.dbf’ SIZE 50M AUTOEXTEND ON;
- 创建用户并授权登录:
- CREATE USER app_user IDENTIFIED BY AppPass_01
DEFAULT TABLESPACE app_ts
TEMPORARY TABLESPACE app_temp
QUOTA 100M ON app_ts
PROFILE DEFAULT;
- GRANT CREATE SESSION TO app_user;
- 授予对象权限(按需最小化授予):
- GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO app_user;
- 对象级授权示例:GRANT SELECT, INSERT, UPDATE, DELETE ON schema.table TO app_user;
- 回收权限:REVOKE CREATE TABLE FROM app_user;
- 锁定/解锁与改密:
- ALTER USER app_user ACCOUNT LOCK|UNLOCK;
- ALTER USER app_user IDENTIFIED BY NewPass_01;
- 说明:新用户默认不能连接,必须显式授予 CREATE SESSION;创建对象需有相应系统权限与表空间配额;对象权限需对具体表/视图单独授予。
三 表空间与配额管理
- 为用户授予多个表空间的使用权(示例):ALTER USER app_user QUOTA UNLIMITED ON other_ts;
- 调整默认表空间:ALTER USER app_user DEFAULT TABLESPACE other_ts;(仅影响之后创建的对象)
- 禁止用户在某个表空间继续分配空间:ALTER USER app_user QUOTA 0 ON app_ts;(已有对象保留,但不可再扩展)
- 授予全库表空间无限制:GRANT UNLIMITED TABLESPACE TO app_user;(会覆盖显式配额,谨慎使用)
- 说明:每个用户应有明确的默认表空间与配额;临时表空间用于排序/哈希等临时段,不为其设置配额;将用户数据从 SYSTEM 表空间分离可降低争用与风险。
四 角色与系统权限最佳实践
- 优先使用自定义角色与“最小权限”原则,避免直接授予 DBA 角色给应用账户。
- 传统角色 CONNECT 在现代 Oracle 中基本仅保留 CREATE SESSION,如需登录只需授予该单项权限即可。
- 角色 RESOURCE 在后续版本中可能被弃用,不建议依赖,改用精确的系统权限与自定义角色。
- 示例(创建角色并授权):
- CREATE ROLE app_role;
- GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO app_role;
- GRANT app_role TO app_user;
- 说明:官方建议创建自有角色并精确分配所需权限,减少对预定义角色的依赖,便于审计与版本演进。