系統權限 vs 物件權限、角色管理、PUBLIC授權、欄位級授權,完整實戰流程指南。
# 1. 啟動監聽器
lsnrctl start
# 2. 啟動實例(Windows)
oradim -startup -sid ORCL
# 3. 一般用戶登入
sqlplus username/password
# 4. DBA登入(SYSDBA)
sqlplus / as sysdba
-- 或 sqlplus sys/password as sysdba
| 步驟 | 操作 | SQL命令 | 說明 |
|---|---|---|---|
| 5 | 建立用戶 | CREATE USER u1 IDENTIFIED BY pwd; | 僅建立帳號,無任何權限 |
| 6 | 授予建立會話權限 | GRANT CREATE SESSION TO u1; | 系統權限,允許登入 |
| 7 | 授予建表權限 | GRANT CREATE TABLE TO u1; | 系統權限,但無表空間配額仍建表失敗 |
| 8 | 授予無限表空間 | GRANT UNLIMITED TABLESPACE TO u1; | 系統權限,跨所有表空間無配額限制 |
| 9 | 撤銷權限 | REVOKE privilege FROM u1; | 系統/物件權限通用 |
| 10 | 查詢用戶系統權限 | SELECT * FROM USER_SYS_PRIVS; | 當前用戶視角 |
| 11 | 查詢用戶物件權限 | SELECT * FROM USER_TAB_PRIVS; | 被授予/授予他人的表權限 |
| 12 | 查詢用戶欄位權限 | SELECT * FROM USER_COL_PRIVS; | 欄位級SELECT/UPDATE/REFERENCES |
| 13 | 物件權限授權 | GRANT SELECT,INSERT ON u1.t1 TO u2; | 物件擁有者/具GRANT OPTION者可授 |
| 14 | 物件權限撤銷 | REVOKE SELECT ON u1.t1 FROM u2; | 同授權者可撤銷 |
| 15 | 授權給PUBLIC | GRANT privilege TO PUBLIC; | 所有用戶(含未來建立)獲得權限,慎用 |
| 16 | 欄位級授權 | GRANT UPDATE(col1,col2) ON t1 TO u1; | SELECT/DELETE不支援欄位級 |
GRANT DBA TO role; GRANT role TO user;)GRANT SELECT ON t1 TO u1 WITH GRANT OPTION; 允許受授者轉授GRANT EXECUTE ON dbms_output TO PUBLIC)DBA_SYS_PRIVS、DBA_TAB_PRIVS、DBA_ROLE_PRIVSPROFILE控制密碼複雜度、過期、鎖定策略