在Linux系统中设置Oracle数据库权限,需同时管理操作系统用户权限(确保Oracle服务正常运行)和数据库权限(控制用户对数据库的操作)。以下是具体步骤:
root用户创建oracle用户(用于运行Oracle服务),并设置密码:sudo adduser oracle sudo passwd 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 # 设置目录权限(所有者可读写执行,组和其他用户可读执行) 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 sudo chcon -R -t oracle_home_t /u01/app/oracle sudo chcon -R -t oracle_db_t /u01/app/oradata oracle用户有权启动监听器和数据库:sudo chown oracle:oinstall /u01/app/oracle/network/admin/listener.ora sudo chown oracle:oinstall /u01/app/oracle/network/admin/tnsnames.ora 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 sqlplus工具以SYSDBA权限登录(需切换至oracle用户):su - oracle sqlplus / as sysdba USERS)、临时表空间(如TEMP):CREATE USER new_user IDENTIFIED BY StrongPassword123 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; ALTER USER new_user QUOTA UNLIMITED ON USERS; -- 无限制配额 -- 或指定具体大小:ALTER USER new_user QUOTA 100M ON USERS; CREATE SESSION允许登录,CREATE TABLE允许建表):GRANT CONNECT, RESOURCE TO new_user; -- CONNECT用于登录,RESOURCE用于创建对象 -- 或单独授予:GRANT CREATE SESSION TO new_user; GRANT CREATE TABLE TO new_user; 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; CREATE ROLE hr_manager; -- 创建角色 GRANT CREATE TABLE, CREATE VIEW, SELECT ON SCOTT.EMP TO hr_manager; -- 分配权限给角色 GRANT hr_manager TO new_user; -- 将角色授予用户 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';REVOKE命令:REVOKE CREATE SESSION, RESOURCE FROM new_user; -- 回收系统权限 REVOKE SELECT ON SCOTT.EMP FROM new_user; -- 回收对象权限 REVOKE hr_manager FROM new_user; -- 回收角色权限 DBA权限)。CONNECT、RESOURCE)适用于大多数场景,自定义角色可提高管理效率。通过以上步骤,可完成Linux环境下Oracle数据库的权限设置,确保系统安全与数据库正常运行。