Linux Oracle用户权限如何设置
Linux环境下Oracle用户权限设置指南
在Linux系统中管理Oracle数据库用户权限,需结合操作系统用户权限与Oracle数据库权限两部分,确保数据库运行的安全性与合规性。以下是具体步骤:
一、操作系统层面:Oracle用户与目录权限设置
Oracle数据库需以专用操作系统用户(通常为oracle
)运行,且需正确配置目录权限以保证数据库文件的可访问性。
1. 创建Oracle操作系统用户
使用root
用户登录Linux,执行以下命令创建oracle
用户并设置密码:
sudo adduser oracle # 创建oracle用户
sudo passwd oracle # 设置oracle用户密码
2. 创建Oracle相关目录
为Oracle软件、数据文件创建专用目录(路径可根据实际版本调整):
sudo mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1 # Oracle软件安装目录
sudo mkdir -p /u01/app/oracle/oradata # Oracle数据文件目录
3. 设置目录所有权与权限
将目录所有权赋予oracle
用户及oinstall
组(Oracle默认组),并设置适当权限:
sudo chown -R oracle:oinstall /u01 # 递归修改/u01目录所有者
sudo chmod -R 775 /u01 # 递归设置目录权限(所有者可读写执行,组可读执行)
4. 配置Oracle用户环境变量
切换至oracle
用户,编辑其.bash_profile
文件,添加Oracle相关环境变量:
su - oracle
vi ~/.bash_profile
添加以下内容(根据实际路径调整):
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=ORCLCDB # 数据库实例名(需与实际一致)
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
使环境变量生效:
source ~/.bash_profile
5. 配置SELinux(若启用)
若系统启用SELinux,需调整上下文以允许Oracle访问目录:
sudo setenforce 0 # 临时禁用SELinux(测试用)
sudo vi /etc/selinux/config # 永久禁用SELinux(修改后需重启)
# 将"SELINUX=enforcing"改为"SELINUX=disabled"
设置Oracle目录的SELinux上下文:
sudo chcon -R -t oracle_home_t /u01/app/oracle
sudo chcon -R -t oracle_db_t /u01/app/oradata
6. 配置防火墙
开放Oracle默认端口(1521/TCP),允许远程连接:
sudo firewall-cmd --permanent --zone=public --add-port=1521/tcp
sudo firewall-cmd --reload
二、Oracle数据库层面:用户权限管理
操作系统用户准备完成后,需以Oracle超级用户(sysdba
)登录数据库,创建数据库用户并分配权限。
1. 登录Oracle数据库
使用sysdba
身份登录(本地登录无需密码,远程登录需配置密码文件):
sqlplus / as sysdba
2. 创建数据库用户
创建新用户并设置密码(如创建用户new_user
,密码为new_password
):
CREATE USER new_user IDENTIFIED BY new_password;
3. 分配表空间与临时表空间
为用户指定默认表空间(存储用户数据)和临时表空间(存储临时数据,通常为TEMP
):
ALTER USER new_user DEFAULT TABLESPACE users;
-- 默认表空间(需存在)
ALTER USER new_user TEMPORARY TABLESPACE temp;
-- 临时表空间(系统默认)
若需限制用户表空间使用量,可添加QUOTA
子句(如无限制):
ALTER USER new_user QUOTA UNLIMITED ON users;
4. 授予系统权限
系统权限允许用户执行数据库级操作(如创建会话、创建表)。常用系统权限包括:
-- 授予连接数据库权限(必需)
GRANT CREATE SESSION TO new_user;
-- 授予创建表、序列、视图等对象权限
GRANT CREATE TABLE, CREATE SEQUENCE, CREATE VIEW TO new_user;
-- 授予资源权限(包含创建对象、无限表空间等)
GRANT RESOURCE TO new_user;
-- 授予DBA权限(最高权限,谨慎授予)
GRANT DBA TO new_user;
5. 授予对象权限
对象权限允许用户对特定数据库对象(如表、视图)进行操作(如查询、插入、更新)。常用对象权限包括:
-- 授予scott用户emp表的查询权限
GRANT SELECT ON scott.emp TO new_user;
-- 授予scott用户emp表的插入、更新权限
GRANT INSERT, UPDATE ON scott.emp TO new_user;
-- 授予scott用户emp表的删除权限
GRANT DELETE ON scott.emp TO new_user;
-- 授予WITH GRANT OPTION(允许用户将权限授予其他用户)
GRANT SELECT ON scott.emp TO new_user WITH GRANT OPTION;
6. 使用角色管理权限
角色是权限的集合,可简化多用户权限分配。常用角色包括:
- 预定义角色:
CONNECT
(连接权限)、RESOURCE
(创建对象权限)、DBA
(管理权限)。 - 自定义角色:根据业务需求创建角色并分配权限。
创建角色并分配权限:
CREATE ROLE hr_manager;
-- 创建hr_manager角色
GRANT CREATE SESSION, CREATE TABLE, SELECT ON scott.emp TO hr_manager;
-- 分配权限给角色
将角色授予用户:
GRANT hr_manager TO new_user;
-- 将hr_manager角色授予new_user
7. 查看用户权限
可通过以下SQL语句查看用户权限:
-- 查看系统权限
SELECT * FROM user_sys_privs;
-- 查看角色权限
SELECT * FROM user_role_privs;
-- 查看对象权限
SELECT * FROM user_tab_privs;
8. 撤销权限
若需撤销用户权限,可使用REVOKE
语句:
-- 撤销new_user对scott.emp表的查询权限
REVOKE SELECT ON scott.emp FROM new_user;
-- 撤销new_user的hr_manager角色
REVOKE hr_manager FROM new_user;
-- 撤销new_user的DBA权限
REVOKE DBA FROM new_user;
注意事项
- 最小权限原则:仅授予用户完成任务所需的最小权限,避免过度授权(如普通用户无需
DBA
权限)。 - 权限传递控制:使用
WITH ADMIN OPTION
授予角色权限时,被授权者可将角色授予其他用户;使用WITH GRANT OPTION
授予对象权限时,被授权者可将权限授予其他用户,需谨慎使用。 - 定期审计:通过
AUDIT
语句跟踪用户活动(如AUDIT SELECT ON scott.emp BY new_user;
),确保权限使用合规。 - 多租户环境:在CDB(容器数据库)中,可使用
CONTAINER=ALL
授予所有PDB权限,或CONTAINER=CURRENT
仅授予当前PDB权限。
通过以上步骤,可在Linux环境下完成Oracle用户权限的全面设置,兼顾系统安全与数据库管理的便利性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Oracle用户权限如何设置
本文地址: https://pptw.com/jishu/725606.html