温馨提示×

Ubuntu Oracle如何设置用户权限

小樊
37
2025-12-18 18:19:27
栏目: 云计算

Ubuntu 上 Oracle 用户权限设置指南

一 操作系统层用户与目录权限

  • 创建用于安装与运行 Oracle 的系统用户和组(仅示例,按实际环境调整路径与组名):
    • 创建组:sudo addgroup oinstallsudo 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;
  • 说明:官方建议创建自有角色并精确分配所需权限,减少对预定义角色的依赖,便于审计与版本演进。

0