温馨提示×

Ubuntu Oracle数据库的权限设置指南

小樊
43
2026-01-03 09:17:05
栏目: 云计算

Ubuntu 上 Oracle 数据库权限设置指南

一 环境准备与登录

  • 以具有 DBA 权限的账户(如 SYSSYSTEM)登录数据库,建议使用 sqlplussqlplus sys as sysdba
  • 若尚未创建业务用户,先准备 表空间临时表空间,再创建用户并授予权限。
  • 权限体系分为 系统权限(如 CREATE SESSION、CREATE TABLE)与 对象权限(对某用户下表/视图的 SELECT/INSERT/UPDATE/DELETE 等),可打包为 角色(如 CONNECT、RESOURCE、DBA)进行批量授权。

二 创建用户与表空间

  • 创建表空间与临时表空间(示例名称可按需调整):
CREATE TABLESPACE app_data
DATAFILE '/u01/app/oradata/ORCL/app_data01.dbf'
SIZE 500M REUSE
AUTOEXTEND ON NEXT 100M MAXSIZE 8G
EXTENT MANAGEMENT LOCAL;

CREATE TEMPORARY TABLESPACE app_temp
TEMPFILE '/u01/app/oradata/ORCL/app_temp01.dbf'
SIZE 200M REUSE
AUTOEXTEND ON NEXT 50M MAXSIZE 2G
EXTENT MANAGEMENT LOCAL;
  • 创建用户并指定默认与临时表空间:
CREATE USER app_user IDENTIFIED BY "StrongPass!23"
DEFAULT TABLESPACE app_data
TEMPORARY TABLESPACE app_temp
ACCOUNT UNLOCK
PASSWORD EXPIRE;  -- 首次登录强制改密
  • 说明:
    • 表空间路径与大小请结合磁盘与业务增长规划;生产环境建议将 数据文件Oracle 软件目录 分离(如软件在 /u01/app/oracle 下,数据在 /u01/app/oradata 下)。
    • 创建用户后默认无任何权限,需显式授权(至少授予 CREATE SESSION 才能登录)。

三 授予权限与角色

  • 最小权限集(适合大多数应用账号):
-- 角色
GRANT CONNECT, RESOURCE TO app_user;

-- 常用对象权限(按需授予)
GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO app_user;

-- 配额(允许用户在指定表空间创建对象)
ALTER USER app_user QUOTA UNLIMITED ON app_data;
-- 或:ALTER USER app_user QUOTA 2G ON app_data;
  • 开发/运维增强(按需):
-- 跨用户查询
GRANT SELECT ANY TABLE TO app_user;

-- 存储过程调试(PL/SQL Developer/SQL Developer 调试需要)
GRANT DEBUG CONNECT SESSION TO app_user;
GRANT DEBUG ANY PROCEDURE TO app_user;

-- 导入导出(Data Pump)
GRANT IMP_FULL_DATABASE TO app_user;  -- 导入全库
GRANT EXP_FULL_DATABASE TO app_user;  -- 导出全库
  • 管理员账号(谨慎授予):
-- 仅授予受控的 DBA 账号
GRANT DBA TO dba_admin;
  • 授权要点:
    • CONNECT 提供登录会话;RESOURCE 提供常用对象创建能力;DBA 为最高权限,仅限极少数账号。
    • 系统权限可带 WITH ADMIN OPTION(允许被授权者再授权);对象权限可带 WITH GRANT OPTION(级联回收)。

四 对象权限与回收

  • 授予对象权限(精确到表/视图/列):
-- 授予对 HR.EMPLOYEES 的查询、插入、更新(仅 SAL 列)
GRANT SELECT, INSERT, UPDATE (sal) ON hr.employees TO app_user;

-- 允许被授权者继续转授
GRANT SELECT ON hr.departments TO app_user WITH GRANT OPTION;
  • 收回权限(对象权限为级联回收,系统权限不级联):
REVOKE SELECT, INSERT, UPDATE (sal) ON hr.employees FROM app_user;
REVOKE SELECT ON hr.departments FROM app_user;
  • 查询当前权限(需 DBA 或相应权限):
-- 查看用户被授予的角色
SELECT * FROM dba_role_privs WHERE grantee = 'APP_USER';

-- 查看用户在对象上的权限
SELECT * FROM dba_tab_privs WHERE grantee = 'APP_USER';
  • 注意:数据字典视图中对象名与用户名通常为大写,查询时请使用大写。

五 安全与运维要点

  • 口令与账户策略(Profile):
-- 登录失败 5 次锁定 1 天,密码 90 天有效,宽限 7 天
CREATE PROFILE app_profile LIMIT
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LOCK_TIME 1
  PASSWORD_LIFE_TIME 90
  PASSWORD_GRACE_TIME 7;

ALTER USER app_user PROFILE app_profile;
  • 会话与资源控制:
-- 限制单用户最多 10 个会话
CREATE PROFILE app_profile LIMIT SESSIONS_PER_USER 10;

-- 查看当前会话并终止异常会话
SELECT sid, serial#, username, program, status
FROM v$session WHERE username = 'APP_USER';

ALTER SYSTEM KILL SESSION 'sid,serial#';
  • 审计与合规(可选):
    • 启用标准审计或细粒度审计(FGA)监控关键表的 SELECT/UPDATE/DELETE
    • 定期回收不再使用的权限与角色,遵循最小权限原则。
  • 运维提示:
    • 避免使用 SYS/SYSTEM 执行业务操作;为应用创建专属账号与角色。
    • 定期备份(如 RMAN/Data Pump),并在变更前后保留授权基线。

0