Ubuntu 上 Oracle 数据库权限设置指南
一 环境准备与登录
sqlplus sys as sysdba。二 创建用户与表空间
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; -- 首次登录强制改密
三 授予权限与角色
-- 角色
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;
四 对象权限与回收
-- 授予对 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;
-- 查看用户被授予的角色
SELECT * FROM dba_role_privs WHERE grantee = 'APP_USER';
-- 查看用户在对象上的权限
SELECT * FROM dba_tab_privs WHERE grantee = 'APP_USER';
五 安全与运维要点
-- 登录失败 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#';