在Ubuntu上设置Oracle用户权限需结合系统用户管理、数据库权限分配及认证配置,核心步骤如下:
一、创建系统用户与组
- 创建专用用户组(如
dba、oinstall):sudo groupadd dba sudo groupadd oinstall - 创建Oracle用户并加入组:
sudo useradd -g oinstall -G dba oracle sudo passwd oracle # 设置密码- 确保用户属于
dba组以获取默认权限。
- 确保用户属于
二、配置Oracle目录权限
- 创建安装目录并授权:
sudo mkdir -p /home/oracle/app/oracle sudo chown -R oracle:dba /home/oracle/app/oracle sudo chmod -R 755 /home/oracle/app/oracle- 关键目录(如
oradata、oraInventory)需严格限制权限。
- 关键目录(如
三、设置数据库权限
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;
四、认证方式配置
-
密码文件认证(远程访问)
- 生成密码文件:
sudo su - oracle orapwd file=$ORACLE_HOME/dbs/orapworcl password="sys_password" entries=10orapworcl为密码文件名,entries指定最大特权用户数。
- 启用密码文件认证:
echo "remote_login_passwordfile=EXCLUSIVE" >> $ORACLE_HOME/network/admin/sqlnet.ora
- 生成密码文件:
-
操作系统认证(本地访问)
- 确保用户属于
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)。 - 操作前备份数据库,并在测试环境验证权限变更。
参考来源: