預設帳戶與登入方式
| 帳戶 | 角色 | 預設密碼 | 登入指令 |
| SYS | 最高管理員 | CHANGE_ON_INSTALL | SQLPLUS / AS SYSDBA 或 SQLPLUS SYS AS SYSDBA |
| SYSTEM | 本地管理員 | MANAGER | SQLPLUS SYSTEM/MANAGER |
| SCOTT | 範例用戶 | TIGER | SQLPLUS SCOTT/TIGER(預設鎖定) |
使用者生命週期管理
建立使用者
CREATE USER zhangsan IDENTIFIED BY password
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
修改密碼
ALTER USER scott IDENTIFIED BY tiger;
系統權限授權(由 DBA 執行)
GRANT CREATE SESSION TO zhangsan; -- 登入權限
GRANT UNLIMITED TABLESPACE TO zhangsan; -- 無限制表空間
GRANT CREATE TABLE TO zhangsan; -- 建表權限
GRANT DROP TABLE TO zhangsan; -- 刪表權限
-- 給所有用戶所有權限(極度不建議生產環境使用)
GRANT ALL TO PUBLIC;
物件權限授權(由物件擁有者執行)
GRANT SELECT ON tablename TO zhangsan;
GRANT INSERT ON tablename TO zhangsan;
GRANT UPDATE ON tablename TO zhangsan;
GRANT DELETE ON tablename TO zhangsan;
-- 欄位級授權(僅 INSERT/UPDATE 支援)
GRANT INSERT (col_id) ON tablename TO zhangsan;
GRANT UPDATE (col_id) ON tablename TO zhangsan;
-- 授權所有表 ALTER(慎用)
GRANT ALTER ANY TABLE TO zhangsan;
撤銷權限
REVOKE CREATE SESSION FROM zhangsan;
REVOKE SELECT ON tablename FROM zhangsan;
-- 語法同 GRANT,關鍵字改為 REVOKE
權限查詢
SELECT * FROM USER_SYS_PRIVS; -- 當前用戶系統權限
SELECT * FROM USER_TAB_PRIVS; -- 當前用戶表物件權限
SELECT * FROM USER_COL_PRIVS; -- 當前用戶欄位權限
跨 Schema 存取
SELECT * FROM zhangsan.tablename; -- 需前綴擁有者名稱
權限傳遞
| 類型 | 語法 | 效果 |
| 系統權限傳遞 | GRANT ALTER ANY TABLE TO zhangsan WITH ADMIN OPTION; | zhangsan 可將此權限再授予他人 |
| 物件權限傳遞 | GRANT SELECT ON tablename TO zhangsan WITH GRANT OPTION; | zhangsan 可將此權限再授予他人 |
角色管理:權限集合
CREATE ROLE myrole;
GRANT CREATE SESSION TO myrole;
GRANT CREATE TABLE TO myrole;
GRANT MYROLE TO zhangsan;
DROP ROLE myrole;
限制: UNLIMITED TABLESPACE、ANY 關鍵字權限無法授予角色。
帳戶狀態控制
ALTER USER username ACCOUNT LOCK; -- 鎖定
ALTER USER username ACCOUNT UNLOCK; -- 解鎖
ALTER USER username PASSWORD EXPIRE; -- 密碼立即過期
刪除使用者
DROP USER username; -- 無物件時
DROP USER username CASCADE; -- 有物件時,強制連帶刪除