Linux环境下Oracle用户管理的完整流程
一、准备工作:操作系统级配置
在Linux(如Oracle Linux、CentOS)上管理Oracle用户前,需先完成操作系统级的基础配置,确保Oracle数据库服务正常运行且具备管理权限。
1. 创建Oracle专用操作系统用户
Oracle数据库要求使用专用操作系统用户(而非root)运行,以提升安全性。通常创建名为oracle的用户及同名组:
# 创建oracle组(若未存在)
sudo groupadd oinstall
sudo groupadd dba
# 创建oracle用户,指定主组为oinstall、附加组为dba
sudo useradd -g oinstall -G dba oracle
# 设置oracle用户密码(需符合复杂度要求)
sudo passwd oracle
2. 配置Oracle环境变量
切换至oracle用户,编辑其shell配置文件(如~/.bash_profile),添加Oracle环境变量:
su - oracle
echo "export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1" >> ~/.bash_profile # 替换为实际ORACLE_HOME路径
echo "export ORACLE_SID=orcl" >> ~/.bash_profile # 替换为实际数据库SID
echo "export PATH=\$PATH:\$ORACLE_HOME/bin" >> ~/.bash_profile
source ~/.bash_profile # 使配置立即生效
3. 验证Oracle服务状态
使用oracle用户启动Oracle监听及数据库服务:
lsnrctl start # 启动监听
sqlplus / as sysdba # 以sysdba身份登录数据库
SQL> startup # 启动数据库(若未运行)
SQL> exit
以上步骤完成后,即可通过oracle用户管理Oracle数据库中的用户。
二、Oracle用户管理核心操作
Oracle用户管理包括创建、修改、删除、权限控制四大类操作,均需通过SQL*Plus或Oracle SQL Developer等工具以管理员身份执行。
1. 创建Oracle用户
使用CREATE USER语句创建用户,需指定用户名、密码,并可选设置默认表空间、临时表空间及配额(存储空间限制):
-- 基本创建(无表空间设置,用户无法存储数据)
CREATE USER new_user IDENTIFIED BY StrongPassword123;
-- 完整创建(推荐:指定表空间及配额)
CREATE USER new_user IDENTIFIED BY StrongPassword123
DEFAULT TABLESPACE users -- 默认表空间(存储用户对象,如表、索引)
TEMPORARY TABLESPACE temp -- 临时表空间(存储排序、临时表等数据)
QUOTA 50M ON users -- 默认表空间配额(50MB,可根据需求调整)
QUOTA UNLIMITED ON temp; -- 临时表空间无限制
2. 修改用户属性
2.1 更改用户密码
使用ALTER USER语句修改密码(需管理员权限或用户自行修改):
-- 管理员修改用户密码
ALTER USER new_user IDENTIFIED BY NewStrongPassword456;
-- 用户自行修改密码(需已知原密码)
CONN new_user/old_password
ALTER USER new_user IDENTIFIED BY NewStrongPassword456;
2.2 锁定/解锁用户
- 锁定用户(防止非法登录):
ALTER USER new_user ACCOUNT LOCK; - 解锁用户(恢复登录权限):
ALTER USER new_user ACCOUNT UNLOCK;
2.3 更改默认表空间/临时表空间
若需调整用户的存储位置,可使用以下命令:
-- 更改默认表空间
ALTER USER new_user DEFAULT TABLESPACE new_tablespace;
-- 更改临时表空间
ALTER USER new_user TEMPORARY TABLESPACE new_temp_tablespace;
3. 删除Oracle用户
使用DROP USER语句删除用户,若用户拥有数据库对象(如表、视图),需添加CASCADE参数彻底删除:
-- 删除无对象的空用户
DROP USER new_user;
-- 删除有对象的用户(彻底清除所有关联对象)
DROP USER new_user CASCADE;
4. 用户权限管理
Oracle权限分为系统权限(如创建会话、建表)和对象权限(如查询、修改特定表),可通过角色(Role)简化权限分配。
4.1 系统权限管理
-
授予权限:使用
GRANT语句授予单个或多个系统权限(需管理员权限):-- 授予普通用户基本权限(CONNECT用于登录,RESOURCE用于创建对象) GRANT CONNECT, RESOURCE TO new_user; -- 授予DBA权限(最高权限,谨慎使用) GRANT DBA TO new_user; -- 授予带传递权限的系统权限(被授权者可进一步授予他人) GRANT CONNECT, RESOURCE TO new_user WITH ADMIN OPTION; -
撤销权限:使用
REVOKE语句撤销系统权限:-- 撤销CONNECT权限 REVOKE CONNECT FROM new_user; -- 撤销带传递的权限(不影响被授权者的传递权限) REVOKE RESOURCE FROM new_user;
4.2 对象权限管理
-
授予权限:授予用户对特定对象(如表、视图)的操作权限(如SELECT、INSERT):
-- 授予查询scott.emp表的权限 GRANT SELECT ON scott.emp TO new_user; -- 授予插入、更新scott.emp表的权限 GRANT INSERT, UPDATE ON scott.emp TO new_user; -- 授予带传递权限的对象权限(被授权者可进一步授予他人) GRANT SELECT ON scott.emp TO new_user WITH GRANT OPTION; -
撤销权限:撤销用户对特定对象的操作权限:
-- 撤销查询scott.emp表的权限 REVOKE SELECT ON scott.emp FROM new_user; -- 撤销带传递的权限(不影响被授权者的传递权限) REVOKE INSERT, UPDATE ON scott.emp FROM new_user;
4.3 角色管理
角色是权限的集合,可简化权限分配(如Oracle内置的CONNECT、RESOURCE角色)。也可自定义角色:
- 创建角色:
CREATE ROLE hr_manager; - 授予权限给角色:
GRANT CREATE SESSION, CREATE TABLE, SELECT ON scott.emp TO hr_manager; - 授予角色给用户:
GRANT hr_manager TO new_user; - 撤销角色:
REVOKE hr_manager FROM new_user;
5. 查看用户权限
通过以下SQL语句查看用户的权限信息,便于审计和管理:
-- 查看系统权限(用户直接或通过角色获得的系统权限)
SELECT * FROM USER_SYS_PRIVS;
-- 查看角色权限(用户通过角色获得的系统权限)
SELECT * FROM USER_ROLE_PRIVS;
-- 查看对象权限(用户对特定对象的操作权限)
SELECT * FROM USER_TAB_PRIVS;
以上操作覆盖了Linux环境下Oracle用户管理的核心场景,遵循最小权限原则(仅授予用户完成任务所需的最少权限),可有效提升数据库安全性[1,2,4,5,6,7,8,9,10,11]。
以上就是关于“如何在Linux上管理Oracle用户”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm