Ubuntu系统上Oracle数据库权限设置技巧
为Oracle创建专用用户及分组,隔离系统权限。通常需创建以下组:
oinstall:安装组,拥有Oracle软件目录的读写权限;dba:数据库管理员组,拥有数据库管理操作权限(如启动/停止数据库);oper(操作员组,执行备份/恢复)、backupdba(备份管理员组)等。sudo groupadd oinstall sudo groupadd dba sudo useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle sudo passwd oracle # 设置用户密码 关键技巧:避免将Oracle用户加入sudo组,减少系统级权限风险。
Oracle软件目录(如/u01/app/oracle/product/19.0.0/dbhome_1)和数据目录(如/u01/app/oracle/oradata)需严格设置权限:
sudo mkdir -p /u01/app/oracle/{product/19.0.0/dbhome_1,oradata} sudo chown -R oracle:oinstall /u01 # 所有者:oracle;所属组:oinstall sudo chmod -R 775 /u01 # 目录权限:所有者可读/写/执行,组可读/执行,其他用户无权限 关键技巧:数据目录(如oradata)应限制为oracle用户专属访问,避免其他用户修改数据库文件。
修改/etc/sysctl.conf文件,调整以下关键参数(根据服务器内存调整数值):
kernel.shmmax = 2147483648 # 最大共享内存段大小(建议为物理内存的一半) kernel.shmall = 524288 # 共享内存总页数(shmmax/页大小,页大小通常为4KB) kernel.shmmni = 4096 # 共享内存段最大数量 fs.file-max = 6815744 # 系统最大文件描述符数 net.ipv4.ip_local_port_range = 9000 65500 # 数据库监听端口范围 使参数生效:
sudo sysctl -p 关键技巧:参数设置过大会导致系统资源耗尽,需根据实际内存调整。
修改/etc/security/limits.conf文件,添加Oracle用户的资源限制:
oracle soft nproc 2047 # 最大进程数(软限制) oracle hard nproc 16384 # 最大进程数(硬限制) oracle soft nofile 1024 # 最大文件描述符数(软限制) oracle hard nofile 65536 # 最大文件描述符数(硬限制) 关键技巧:软限制是用户可自行调整的上限,硬限制是系统允许的最大值,需合理设置避免资源耗尽。
以sysdba身份登录(需切换至oracle用户):
su - oracle sqlplus / as sysdba 创建用户时,建议分配角色(如RESOURCE)而非直接授予大量系统权限:
CREATE USER myuser IDENTIFIED BY StrongPassword; -- 创建用户 GRANT CONNECT, RESOURCE TO myuser; -- 授予连接和资源权限 关键技巧:RESOURCE角色包含创建表、视图等常用权限,避免直接授予DBA角色。
CREATE SESSION用于连接数据库,CREATE TABLE用于创建表);GRANT SELECT, INSERT ON mytable TO myuser);myrole),将权限分配给角色后再分配给用户,实现权限复用:CREATE ROLE myrole; GRANT SELECT ON mytable TO myrole; GRANT myrole TO myuser; 关键技巧:角色化管理简化了权限维护,避免重复授权。
-- 查看用户拥有的系统权限 SELECT * FROM USER_SYS_PRIVS; -- 查看用户拥有的对象权限 SELECT * FROM USER_TAB_PRIVS WHERE GRANTEE = 'MYUSER'; REVOKE CREATE TABLE FROM myuser; -- 撤销系统权限 REVOKE SELECT ON mytable FROM myuser; -- 撤销对象权限 安装并配置AppArmor,限制Oracle进程的访问范围:
sudo apt-get install apparmor apparmor-utils sudo aa-enforce /etc/apparmor.d/usr.sbin.oracle # 启用Oracle配置文件 sudo aa-status # 查看AppArmor状态 关键技巧:AppArmor可防止Oracle进程越权访问系统文件,提升安全性。
使用UFW限制Oracle监听端口(默认1521)的访问:
sudo ufw allow 22/tcp # 允许SSH sudo ufw allow 1521/tcp # 允许Oracle监听 sudo ufw enable # 启用防火墙 关键技巧:仅开放必要的端口,减少外部攻击面。