温馨提示×

linux oracle如何设权限

小樊
38
2026-09-04 14:12:36
栏目: 云计算

Linux + Oracle 数据库 环境中,“设权限”通常涉及 操作系统层权限Oracle 数据库层权限 两部分。下面按常见场景说明。


一、Linux 系统层权限(OS 权限)

1. Oracle 用户和组

Oracle 一般使用专用用户:

oracle:oinstall
oracle:dba

查看:

id oracle

2. Oracle 软件目录权限

常见目录:

/u01/app/oracle
/u01/app/oraInventory

正确权限示例:

chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app/oracle

⚠️ 不要用 777,有安全风险。

3. Oracle 可执行文件权限

Oracle 自带脚本会设置好,一般不要手动改:

$ORACLE_HOME/bin/oracle

通常应为:

-rwsr-s--x oracle oinstall

若异常可修复:

chown oracle:oinstall $ORACLE_HOME/bin/oracle
chmod 6751 $ORACLE_HOME/bin/oracle

4. 让 oracle 用户能使用 raw 设备 / ASM

chown oracle:dba /dev/sd*
chmod 660 /dev/sd*

(生产环境建议用 udev 规则)


二、Oracle 数据库层权限(DB 权限)

1. 登录数据库

sqlplus / as sysdba

2. 用户创建与授权

CREATE USER test IDENTIFIED BY test123;
GRANT CONNECT, RESOURCE TO test;

3. 系统权限

GRANT CREATE TABLE TO test;
GRANT CREATE VIEW TO test;
GRANT UNLIMITED TABLESPACE TO test;

4. 对象权限

GRANT SELECT, INSERT ON scott.emp TO test;

5. 角色管理(推荐)

CREATE ROLE app_role;
GRANT CONNECT, RESOURCE TO app_role;
GRANT app_role TO test;

6. 查看权限

SELECT * FROM dba_sys_privs WHERE grantee='TEST';
SELECT * FROM dba_tab_privs WHERE grantee='TEST';

三、常见场景示例

场景1:新项目用户

CREATE USER appuser IDENTIFIED BY app123;
GRANT CONNECT, RESOURCE, CREATE VIEW TO appuser;
ALTER USER appuser DEFAULT TABLESPACE users;

场景2:只读用户

CREATE USER readonly IDENTIFIED BY ro123;
GRANT CREATE SESSION TO readonly;
GRANT SELECT ON scott.emp TO readonly;

场景3:Linux 上允许非 oracle 用户启停库(不推荐)

usermod -aG dba user1

四、安全建议

  • 不用 root 跑 Oracle
  • 不使用 DBA 角色给普通用户
  • 权限最小化
  • 定期审计:
SELECT * FROM dba_role_privs;

如果你指的是 具体某一种权限(比如:表权限 / 目录权限 / 启停权限 / 网段访问),可以告诉我,我给你更精确的命令。

0