oracle在centos上的用户权限如何管理
Oracle在CentOS上的用户权限管理指南
Oracle在CentOS上的用户权限管理分为操作系统层面(保障Oracle软件运行安全)和数据库层面(控制用户对数据库的访问与操作)两部分,以下是具体操作流程:
一、操作系统层面权限管理
操作系统层面的权限管理主要是创建专用用户/组、设置目录权限及系统参数,确保Oracle数据库运行的安全性与稳定性。
1. 创建Oracle专用用户与组
Oracle建议使用专用用户(如oracle
)和组(如oinstall
、dba
)管理数据库,避免使用root用户。
# 创建oinstall组(安装Oracle软件的用户组)
groupadd oinstall
# 创建dba组(具有数据库管理权限的用户组)
groupadd dba
# 创建oracle用户,加入oinstall和dba组
useradd -g oinstall -G dba oracle
# 设置oracle用户密码
passwd oracle
说明:oinstall
组用于Oracle软件的安装与维护,dba
组用于数据库的管理(如启动/停止数据库)。
2. 设置Oracle目录权限
Oracle软件及相关目录(如安装目录、数据文件目录、配置目录)的权限必须归属于oracle
用户和oinstall
组,避免权限泄露。
# 假设Oracle安装目录为/opt/oracle,数据文件目录为/opt/oracle/oradata
mkdir -p /opt/oracle /opt/oracle/oradata
# 设置目录所有者为oracle:oinstall,权限为775(所有者与组有读写执行权限,其他用户有读执行权限)
chown -R oracle:oinstall /opt/oracle /opt/oracle/oradata
chmod -R 775 /opt/oracle /opt/oracle/oradata
说明:若存在监听器配置目录(如/u01/app/oracle/network/admin
),需同步设置权限:
chown -R oracle:oinstall /u01/app/oracle/network/admin
chmod -R 775 /u01/app/oracle/network/admin
3. 配置SELinux(若启用)
若CentOS启用了SELinux(默认为enforcing
模式),需设置正确的SELinux上下文,避免Oracle无法访问目录。
# 参考Oracle官方文档,设置Oracle目录的SELinux上下文
semanage fcontext -a -t oracle_db_t "/opt/oracle(/.*)?"
restorecon -Rv /opt/oracle
说明:若未安装semanage
工具,可通过yum install policycoreutils-python-utils
安装。
4. 调整系统内核参数
Oracle对系统内核参数有特定要求,需修改/etc/sysctl.conf
文件并生效:
# 编辑sysctl.conf文件
vi /etc/sysctl.conf
# 追加以下参数(根据Oracle版本调整)
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmax = 2147483648
net.ipv4.ip_local_port_range = 9000 65500
# 生效配置
sysctl -p
说明:这些参数用于优化系统资源(如共享内存、文件句柄数),确保Oracle正常运行。
5. 设置Oracle用户环境变量
切换至oracle
用户,编辑~/.bash_profile
文件,添加Oracle环境变量:
su - oracle
vi ~/.bash_profile
# 追加以下内容(根据实际安装路径调整)
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
# 生效环境变量
source ~/.bash_profile
说明:环境变量用于Oracle客户端的正常连接与操作。
二、数据库层面权限管理
数据库层面的权限管理通过SQL*Plus或Oracle SQL Developer等工具执行,主要分为系统权限(全局操作权限)和对象权限(特定对象访问权限)。
1. 登录数据库(以SYSDBA身份)
权限管理需具有SYSDBA或相应权限的用户(如SYS、SYSTEM)执行:
su - oracle
sqlplus / as sysdba
说明:/ as sysdba
表示以SYSDBA身份登录,无需输入密码(需操作系统用户属于dba
组)。
2. 创建用户
创建用户时需指定默认表空间(存储用户数据的表空间)、临时表空间(存储排序等临时数据的表空间),初始状态下用户无任何权限。
-- 创建用户itbank,密码为123456,默认表空间为itbank_tbs,临时表空间为temp
CREATE USER itbank IDENTIFIED BY 123456
DEFAULT TABLESPACE itbank_tbs
TEMPORARY TABLESPACE temp;
说明:若未提前创建表空间,需先执行CREATE TABLESPACE
语句(如CREATE TABLESPACE itbank_tbs DATAFILE '/opt/oracle/oradata/ORCL/itbank.dbf' SIZE 100M AUTOEXTEND ON;
)。
3. 授权操作
用户创建后需授予相应权限才能访问数据库:
- 系统权限:控制用户对数据库的全局操作(如连接数据库、创建表、备份数据库)。
常用系统权限:-- 授予connect(连接数据库)、resource(创建对象)、dba(系统管理)权限 GRANT CONNECT, RESOURCE, DBA TO itbank;
CREATE SESSION
(连接数据库)、CREATE TABLE
(创建表)、UNLIMITED TABLESPACE
(无限制使用表空间)。 - 对象权限:控制用户对特定数据库对象(如表、视图、存储过程)的访问(如查询、插入、更新)。
常用对象权限:-- 授予itbank用户对scott.emp表的查询、插入、更新权限 GRANT SELECT, INSERT, UPDATE ON scott.emp TO itbank;
SELECT
(查询)、INSERT
(插入)、UPDATE
(更新)、DELETE
(删除)、ALL
(所有权限)。
4. 撤销权限
若需收回用户权限,可使用REVOKE
语句:
-- 撤销itbank用户的CONNECT、RESOURCE系统权限
REVOKE CONNECT, RESOURCE FROM itbank;
-- 撤销itbank用户对scott.emp表的SELECT、INSERT、UPDATE对象权限
REVOKE SELECT, INSERT, UPDATE ON scott.emp FROM itbank;
5. 删除用户
若用户不再使用,可删除用户及其所有对象(如表、视图):
-- 删除itbank用户及其所有对象(CASCADE为级联删除)
DROP USER itbank CASCADE;
三、权限管理最佳实践
- 最小权限原则:仅授予用户完成工作所需的最小权限(如开发人员仅需
CONNECT
、RESOURCE
权限,无需DBA
权限)。 - 使用角色管理权限:对于频繁授权的权限集合,可创建角色(如
custom_role
),将权限授予角色后再将角色授予用户,简化权限管理。-- 创建角色 CREATE ROLE custom_role; -- 授予角色权限 GRANT SELECT, INSERT ON scott.emp TO custom_role; -- 授予用户角色 GRANT custom_role TO itbank;
- 定期审计权限:通过
DBA_SYS_PRIVS
(系统权限)、DBA_TAB_PRIVS
(对象权限)视图查看用户权限,及时回收不必要的权限。-- 查看itbank用户的系统权限 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'ITBANK'; -- 查看itbank用户的对象权限 SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'ITBANK';
通过以上步骤,可实现Oracle在CentOS上的用户权限管理,保障数据库的安全性与可用性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: oracle在centos上的用户权限如何管理
本文地址: https://pptw.com/jishu/726657.html