在Ubuntu上管理Oracle用户权限前,需先创建专用操作系统用户并设置目录权限,确保数据库运行的安全性。
使用groupadd创建dba(数据库管理员组)和oinstall(Oracle安装组),再用useradd创建oracle用户并加入这两个组:
sudo groupadd dba
sudo groupadd oinstall
sudo useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle
sudo passwd oracle # 设置oracle用户密码
创建Oracle安装目录(如/home/app/oracle)和数据目录(如/home/app/oradata),并将所有权赋予oracle:oinstall,权限设为755(所有者可读写执行,组和其他用户可读执行):
sudo mkdir -p /home/app/oracle /home/app/oradata
sudo chown -R oracle:oinstall /home/app/oracle /home/app/oradata
sudo chmod -R 755 /home/app/oracle /home/app/oradata
切换至oracle用户,编辑~/.bash_profile文件,添加Oracle环境变量(根据实际安装路径调整):
sudo su - oracle
nano ~/.bash_profile
在文件末尾添加:
export ORACLE_BASE=/home/app/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=$ORACLE_HOME/lib
保存后执行source ~/.bash_profile使配置生效。
完成操作系统配置后,通过SQL*Plus以sysdba身份登录数据库,进行用户创建与权限分配。
使用sysdba权限登录(需切换至oracle用户):
sqlplus / as sysdba
创建用户时需指定默认表空间(如users)和临时表空间(如temp),并设置密码:
CREATE USER test_user IDENTIFIED BY Test@123456
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
根据用户需求授予相应系统权限:
CONNECT(允许登录数据库)、RESOURCE(允许创建表、序列等对象):GRANT CONNECT, RESOURCE TO test_user;
DBA(系统最高权限,允许创建数据库结构、管理用户等):GRANT DBA TO test_user; -- 仅授予需要管理员权限的用户
允许用户操作特定数据库对象(如表、视图):
-- 授予对HR.EMPLOYEES表的SELECT、UPDATE权限
GRANT SELECT, UPDATE ON HR.EMPLOYEES TO test_user;
-- 授予对SCOTT.DEPT表的INSERT权限
GRANT INSERT ON SCOTT.DEPT TO test_user;
角色是一组权限的集合,可批量授予用户:
CREATE ROLE hr_manager;
GRANT CREATE JOB, DELETE ANY TABLE TO hr_manager;
GRANT hr_manager TO test_user;
若需收回权限,使用REVOKE命令:
-- 撤销SELECT权限
REVOKE SELECT ON HR.EMPLOYEES FROM test_user;
-- 撤销角色
REVOKE hr_manager FROM test_user;
-- 撤销DBA权限
REVOKE DBA FROM test_user;
SELECT * FROM USER_TAB_PRIVS WHERE GRANTEE = 'TEST_USER';
SELECT * FROM ROLE_TAB_PRIVS WHERE GRANTEE = 'HR_MANAGER';
SELECT * FROM USER_ROLE_PRIVS WHERE GRANTEE = 'TEST_USER';
若需彻底删除用户及所有对象,使用DROP USER命令:
DROP USER test_user CASCADE; -- CASCADE表示同时删除用户创建的对象
DBA权限)。AUDIT GRANT ANY PRIVILEGE BY ACCESS;)。通过以上步骤,可在Ubuntu环境下规范管理Oracle数据库用户的权限,确保数据库的安全性与稳定性。