温馨提示×

ubuntu oracle如何设置权限

小樊
44
2026-09-10 18:57:29
栏目: 云计算

在 Ubuntu 上如果使用 Oracle 数据库(通常是 Oracle Database 19c / 21c 等),“设置权限”一般涉及 系统层权限(OS 用户/组)、Oracle 数据文件权限 和 数据库内部权限(用户/角色)。下面按常见场景说明。


一、Ubuntu 系统层权限(Oracle 用户和组)

1. Oracle 安装用户和组

Oracle 通常不使用 root 运行,而是:

oracle:oinstall
oracle:dba

查看:

id oracle

2. 设置 Oracle 用户环境变量

su - oracle
vi .bashrc

常见内容:

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH

生效:

source .bashrc

二、Oracle 数据目录权限(非常重要)

Oracle 数据文件必须属于 oracle:oinstall 或 oracle:dba

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

⚠️ 不要给 /u01 设 777,会有安全风险


三、Oracle 数据库内部权限(用户/角色)

1. 登录数据库

sqlplus / as sysdba

2. 创建用户并授权

CREATE USER testuser IDENTIFIED BY password;
GRANT CONNECT, RESOURCE TO testuser;

3. 授予表权限

GRANT SELECT, INSERT, UPDATE ON scott.emp TO testuser;

4. 收回权限

REVOKE INSERT ON scott.emp FROM testuser;

四、常见权限管理方式

1. 使用角色(推荐)

CREATE ROLE app_role;
GRANT SELECT, INSERT ON orders TO app_role;
GRANT app_role TO testuser;

2. 查看用户权限

SELECT * FROM user_sys_privs;
SELECT * FROM user_tab_privs;

五、Ubuntu 防火墙 & 监听权限(可选)

1. 监听端口(默认 1521)

sudo ufw allow 1521/tcp

2. 确保 listener 属于 oracle 用户

lsnrctl status

六、常见错误 & 解决

❌ ORA-01031: insufficient privileges

  • 没用 sysdba
  • 用户权限不足

✅ 解决:

sqlplus / as sysdba
GRANT DBA TO username;

如果你指的是 “Ubuntu 上 Oracle 用户无法启动”、“数据文件权限错误”、或 “某个具体 SQL 权限”,可以告诉我具体场景,我可以给你精确命令。

0 踩