温馨提示×

Ubuntu Oracle用户权限设置

小樊
47
2025-10-04 05:56:31
栏目: 云计算

Ubuntu环境下Oracle数据库用户权限设置指南

一、前期准备:操作系统用户与目录权限配置

在Ubuntu上管理Oracle用户权限前,需先创建专用操作系统用户并设置目录权限,确保数据库运行的安全性。

1. 创建Oracle专用操作系统用户

使用groupadd创建dba(数据库管理员组)和oinstall(Oracle安装组),再用useradd创建oracle用户并加入这两个组:

sudo groupadd dba
sudo groupadd oinstall
sudo useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle
sudo passwd oracle  # 设置oracle用户密码

2. 配置Oracle目录权限

创建Oracle安装目录(如/home/app/oracle)和数据目录(如/home/app/oradata),并将所有权赋予oracle:oinstall,权限设为755(所有者可读写执行,组和其他用户可读执行):

sudo mkdir -p /home/app/oracle /home/app/oradata
sudo chown -R oracle:oinstall /home/app/oracle /home/app/oradata
sudo chmod -R 755 /home/app/oracle /home/app/oradata

3. 设置Oracle环境变量

切换至oracle用户,编辑~/.bash_profile文件,添加Oracle环境变量(根据实际安装路径调整):

sudo su - oracle
nano ~/.bash_profile

在文件末尾添加:

export ORACLE_BASE=/home/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1  # 根据实际版本调整
export ORACLE_SID=orcl  # 数据库实例名
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

保存后执行source ~/.bash_profile使配置生效。

二、Oracle数据库用户权限管理

完成操作系统配置后,通过SQL*Plus以sysdba身份登录数据库,进行用户创建与权限分配。

1. 登录数据库

使用sysdba权限登录(需切换至oracle用户):

sqlplus / as sysdba

2. 创建数据库用户

创建用户时需指定默认表空间(如users)和临时表空间(如temp),并设置密码:

CREATE USER test_user IDENTIFIED BY Test@123456 
DEFAULT TABLESPACE users 
TEMPORARY TABLESPACE temp;

3. 授予系统权限

根据用户需求授予相应系统权限:

  • 基础权限CONNECT(允许登录数据库)、RESOURCE(允许创建表、序列等对象):
    GRANT CONNECT, RESOURCE TO test_user;
    
  • 高级权限DBA(系统最高权限,允许创建数据库结构、管理用户等):
    GRANT DBA TO test_user;  -- 仅授予需要管理员权限的用户
    

4. 授予对象权限

允许用户操作特定数据库对象(如表、视图):

-- 授予对HR.EMPLOYEES表的SELECT、UPDATE权限
GRANT SELECT, UPDATE ON HR.EMPLOYEES TO test_user;

-- 授予对SCOTT.DEPT表的INSERT权限
GRANT INSERT ON SCOTT.DEPT TO test_user;

5. 使用角色简化权限管理

角色是一组权限的集合,可批量授予用户:

  • 创建角色
    CREATE ROLE hr_manager;
    
  • 分配权限给角色
    GRANT CREATE JOB, DELETE ANY TABLE TO hr_manager;
    
  • 将角色授予用户
    GRANT hr_manager TO test_user;
    

6. 撤销权限

若需收回权限,使用REVOKE命令:

-- 撤销SELECT权限
REVOKE SELECT ON HR.EMPLOYEES FROM test_user;

-- 撤销角色
REVOKE hr_manager FROM test_user;

-- 撤销DBA权限
REVOKE DBA FROM test_user;

7. 查询权限信息

  • 查看用户拥有的权限
    SELECT * FROM USER_TAB_PRIVS WHERE GRANTEE = 'TEST_USER';
    
  • 查看角色拥有的权限
    SELECT * FROM ROLE_TAB_PRIVS WHERE GRANTEE = 'HR_MANAGER';
    
  • 查看用户角色
    SELECT * FROM USER_ROLE_PRIVS WHERE GRANTEE = 'TEST_USER';
    

8. 删除用户(可选)

若需彻底删除用户及所有对象,使用DROP USER命令:

DROP USER test_user CASCADE;  -- CASCADE表示同时删除用户创建的对象

三、权限管理最佳实践

  1. 最小权限原则:仅授予用户完成工作所需的最低权限(如普通用户无需DBA权限)。
  2. 定期审查:每月检查用户权限,删除不再需要的权限或用户。
  3. 使用角色:通过角色管理权限,避免重复授权。
  4. 审计权限变更:启用Oracle审计功能,跟踪权限修改记录(如AUDIT GRANT ANY PRIVILEGE BY ACCESS;)。

通过以上步骤,可在Ubuntu环境下规范管理Oracle数据库用户的权限,确保数据库的安全性与稳定性。

0