Ubuntu上Oracle用户权限如何设置

在Ubuntu上设置Oracle用户权限需结合系统用户管理、数据库权限分配及认证配置,核心步骤如下:

一、创建系统用户与组

  1. 创建专用用户组(如dbaoinstall):
    sudo groupadd dba  
    sudo groupadd oinstall  
    
  2. 创建Oracle用户并加入组
    sudo useradd -g oinstall -G dba oracle  
    sudo passwd oracle  # 设置密码  
    
    • 确保用户属于dba组以获取默认权限。

二、配置Oracle目录权限

  1. 创建安装目录并授权
    sudo mkdir -p /home/oracle/app/oracle  
    sudo chown -R oracle:dba /home/oracle/app/oracle  
    sudo chmod -R 755 /home/oracle/app/oracle  
    
    • 关键目录(如oradataoraInventory)需严格限制权限。

三、设置数据库权限

1. 系统权限(需DBA用户操作)

  • 创建用户并授权

    CREATE USER test_user IDENTIFIED BY "password";  
    GRANT CONNECT, RESOURCE, DBA TO test_user;  -- 授予基本权限  
    
    • CONNECT:允许登录;RESOURCE:允许创建对象;DBA:超级管理员权限。
  • 角色管理

    CREATE ROLE custom_role;  
    GRANT SELECT ON scott.emp TO custom_role;  
    GRANT custom_role TO test_user;  -- 通过角色批量授权  
    

2. 对象权限

  • 授权表操作
    GRANT SELECT, INSERT, UPDATE ON scott.emp TO test_user;  
    
  • 撤销权限
    REVOKE DELETE ON scott.emp FROM test_user;  
    

四、认证方式配置

  1. 密码文件认证(远程访问)

    • 生成密码文件:
      sudo su - oracle  
      orapwd file=$ORACLE_HOME/dbs/orapworcl password="sys_password" entries=10  
      
      • orapworcl为密码文件名,entries指定最大特权用户数。
    • 启用密码文件认证:
      echo "remote_login_passwordfile=EXCLUSIVE" >> $ORACLE_HOME/network/admin/sqlnet.ora  
      
  2. 操作系统认证(本地访问)

    • 确保用户属于dba组,登录时使用sqlplus / as sysdba

五、权限验证与维护

  • 查看用户权限
    -- 查看系统权限  
    SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'TEST_USER';  
    -- 查看对象权限  
    SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'TEST_USER';  
    
  • 定期审计
    • 检查V$PWFILE_USERS确认特权用户列表。
    • 通过audit命令记录权限使用情况。

注意事项

  • 遵循最小权限原则,仅授予必要权限,避免滥用DBA权限。
  • 远程访问需同时配置防火墙(如ufw)限制端口(默认1521)。
  • 操作前备份数据库,并在测试环境验证权限变更。

参考来源: