在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數據庫用戶的權限,確保數據庫的安全性與穩定性。