温馨提示×

Linux Oracle怎样设置权限

小樊
32
2025-10-31 09:28:26
栏目: 云计算

Linux环境下Oracle权限设置指南

在Linux系统中设置Oracle数据库权限,需同时管理操作系统用户权限(确保Oracle服务正常运行)和数据库权限(控制用户对数据库的操作)。以下是具体步骤:

一、操作系统层面权限设置

  1. 创建Oracle专用用户
    使用root用户创建oracle用户(用于运行Oracle服务),并设置密码:
    sudo adduser oracle sudo passwd oracle 
  2. 设置用户主目录与权限
    将Oracle用户主目录指向安装路径(如/u01/app/oracle),并修改所有权:
    sudo usermod -d /u01/app/oracle -m oracle # 创建主目录并迁移 sudo chown -R oracle:oinstall /u01 # 设置目录所有者(oinstall为Oracle组) sudo chmod -R 755 /u01 # 设置目录权限(所有者可读写执行,组和其他用户可读执行) 
  3. 配置Oracle环境变量
    编辑oracle用户的.bash_profile文件,添加Oracle相关环境变量:
    sudo nano /u01/app/oracle/.bash_profile 
    添加以下内容(根据实际安装路径调整):
    export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1 # Oracle安装目录 export ORACLE_SID=ORCLCDB # 数据库实例名 export PATH=$PATH:$ORACLE_HOME/bin # 添加Oracle命令到PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib # 设置库文件路径 
    使配置生效:
    source /u01/app/oracle/.bash_profile 
  4. 设置SELinux(若启用)
    若系统启用SELinux,需调整上下文以允许Oracle访问文件:
    sudo chcon -R -t oracle_home_t /u01/app/oracle sudo chcon -R -t oracle_db_t /u01/app/oradata 
  5. 配置监听器与数据库权限
    确保oracle用户有权启动监听器和数据库:
    sudo chown oracle:oinstall /u01/app/oracle/network/admin/listener.ora sudo chown oracle:oinstall /u01/app/oracle/network/admin/tnsnames.ora 
  6. 配置sudo权限(可选)
    若需oracle用户通过sudo执行特定命令(如启动监听器),编辑sudoers文件:
    sudo visudo 
    添加以下内容:
    oracle ALL=(ALL) NOPASSWD: /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start, /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl stop, /u01/app/oracle/product/19.0.0/dbhome_1/bin/sqlplus / as sysdba 

二、Oracle数据库层面权限设置

  1. 以SYSDBA身份登录
    使用sqlplus工具以SYSDBA权限登录(需切换至oracle用户):
    su - oracle sqlplus / as sysdba 
  2. 创建数据库用户
    创建用户并指定默认表空间(如USERS)、临时表空间(如TEMP):
    CREATE USER new_user IDENTIFIED BY StrongPassword123 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; 
  3. 分配表空间配额
    为用户设置表空间使用限额(避免无限制占用空间):
    ALTER USER new_user QUOTA UNLIMITED ON USERS; -- 无限制配额 -- 或指定具体大小:ALTER USER new_user QUOTA 100M ON USERS; 
  4. 授予系统权限
    根据用户需求授予系统权限(如CREATE SESSION允许登录,CREATE TABLE允许建表):
    GRANT CONNECT, RESOURCE TO new_user; -- CONNECT用于登录,RESOURCE用于创建对象 -- 或单独授予:GRANT CREATE SESSION TO new_user; GRANT CREATE TABLE TO new_user; 
  5. 授予对象权限
    允许用户操作其他用户的对象(如SCOTT用户的EMP表):
    GRANT SELECT, INSERT, UPDATE ON SCOTT.EMP TO new_user; -- 授予查询、插入、更新权限 -- 若允许用户将权限转授他人,添加WITH GRANT OPTION:GRANT SELECT ON SCOTT.EMP TO new_user WITH GRANT OPTION; 
  6. 使用角色简化权限管理
    创建角色并分配权限,再授予用户(减少重复操作):
    CREATE ROLE hr_manager; -- 创建角色 GRANT CREATE TABLE, CREATE VIEW, SELECT ON SCOTT.EMP TO hr_manager; -- 分配权限给角色 GRANT hr_manager TO new_user; -- 将角色授予用户 
  7. 查看权限信息
    • 查看系统权限:SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'NEW_USER';
    • 查看对象权限:SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'NEW_USER';
    • 查看用户角色:SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'NEW_USER';
  8. 回收权限
    若需撤销权限,使用REVOKE命令:
    REVOKE CREATE SESSION, RESOURCE FROM new_user; -- 回收系统权限 REVOKE SELECT ON SCOTT.EMP FROM new_user; -- 回收对象权限 REVOKE hr_manager FROM new_user; -- 回收角色权限 

注意事项

  • 最小权限原则:仅授予用户完成任务所需的最低权限(如普通用户无需DBA权限)。
  • 角色管理:预定义角色(如CONNECTRESOURCE)适用于大多数场景,自定义角色可提高管理效率。
  • 定期审计:定期检查用户权限,删除不再需要的权限或用户,避免权限滥用。

通过以上步骤,可完成Linux环境下Oracle数据库的权限设置,确保系统安全与数据库正常运行。

0