Oracle用戶管理的常用SQL

用戶

系統默認的權限

數據字典名稱 說 明
DBA_USERS 數據庫用戶基本信息表
DBA_SYS_PRIVS 已授予用戶或角色的系統權限
DBA_TAB_PRIVS 數據庫對象上的所有權限
USER_SYS_PRIVS 登錄用戶可以查看自己的系統權限
ROLE_SYS_PRIVS 登錄用戶查看自己的角色
ALL_TABLES 用戶自己可以查詢的基表信息
USER_TAB_PRIVS 用戶自己將哪些基表權限授予哪些用戶
ALL_TAB_PRIVS 哪些用戶給自己授權

角色對應的權限

角 色 名 包 含 權 限
ALTER SESSION
CREATE CLUSTER
CREATE DATABASE LINK
CREATE SEQUENCE
CONNECT CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE VIEW
CREATE CLUSTER
CREATE INDEXTYPE
CREATE OPERATOR
CREATE PROCEDURE
RESOURCE CREATE SEQUENCE
CREATE TABLE
CREATE TRIGGER
CREATE TYPE
DBA 所有權限,不受限制
SELECT ANY TABLE
BACKUP ANY TABLE
EXP_FULL_DATABASE EXECUTE ANY PROCEDURE
EXECUTE ANY TYPE
ADMINISTER RESOURCE MANAGER
IMP_FULL_DATABASE EXECUTE_CATALOG_ROLE
SELECT_CATALOG_ROLE

常用的sql語句

  • 查詢所有用戶
    SELECT * from dba_users;
  • 查詢當前用戶
    select USERNAME from user_users;
  • 查詢當前用戶的權限
    select * from session_privs;
  • 登錄用戶查看自己的角色
    SELECT * FROM ROLE_SYS_PRIVS;
  • 查詢當前用戶的所有表
select TABLE_NAME from all_tables where owner='SCOTT';
select count(*) from all_tables where owner='SCOTT';

創建用戶

create user user_name identified by pass_word
[or identified exeternally]
[or identified globally as ‘CN=user]
[default tablespace tablespace_default]
[temporary tablespace tablespace_temp]
[quota [integer k[m]] [unlimited] ] on tablesapce_ specify1
[,quota [integer k[m]] [unlimited] ] on tablesapce_ specify2
[,]on tablespace_specifyn
[profiles profile_name]
[account lock or account unlock]
  • user_name:用戶名,一般爲字母數字型和“#”及“_”符號。
  • pass_word:用戶口令,一般爲字母數字型和“#”及“_”符號。
  • identified exeternally:表示用戶名在操作系統下驗證,這種情況下要求該用戶必須與操作系統
    中所定義的用戶名相同。
  • identified globally as ‘CN=user’:表示用戶名由 Oracle 安全域中心服務器驗證,CN 名字表示用
    戶的外部名。
  • [default tablespace tablespace_default]:表示該用戶在創建數據對象時使用的默認表空間。
  • [temporary tablespace tablespace_temp]:表示該用戶所使用的臨時表空間。
  • [quota [integer K[M]] [unlimited]] on tablespace_specify1:表示該用戶在指定表空間中允許佔用
    的最大空間。
  • [profiles profile_name]:資源文件的名稱。
  • [account lock or account unlock]:用戶是否被加鎖,默認情況下是不加鎖的。
    下面將通過若干具體的實例來演示如何創建數據庫用戶。

創建用戶,並指定默認表空間和臨時表空間

  • 創建一個 mr 用戶,口令爲 mrsoft,並設置默認的表空間爲 users,臨時表空間爲 temp的用戶
create user mr identified by mrsoft
default tablespace users
temporary tablespace temp;

修改用戶

  • 修改用戶 east 在表空間上的磁盤限額爲 20MB(原始爲 10MB,先增加 10MB)
    alter user east quota 20m on tbsp_1;
  • 修改用戶 east 的新口令爲 123456(原始爲 mrsoft)
    alter user east identified by 123456;
  • 使用 alter user 命令解除被鎖定的賬戶 SH
    alter user SH account unlock;

修改用戶名

  • 查詢對應的user# id
SELECT * FROM user$ u WHERE u.NAME='430TEMPO';

UPDATE USER$ SET NAME='430TEMPO'WHERE USER#=100;

COMMIT;
  • 強制刷新
ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH SHARED_POOL;
  • 修改密碼
ALTER USER 430TEMPO IDENTIFIED BY root;

刪除用戶

drop user user_name[cascade]   --cascade:級聯刪除選項,如果用戶包含數據庫對象,則必須加 CASCADE 選項,此時連同該用戶所擁有的對象一起刪除。
  • 使用 drop user 語句刪除用戶 df,並連同該用戶所擁有的對象一起刪除
    drop user df cascade;

用戶權限管理

  • 語法
    GRANT sys_privi | role to user | role | public [with admin option]

  • 爲用戶 east 授予連接和開發系統權限
    grant connect,resource to east;

  • 回收系統權限
    revoke sys_privi | role from user | role | PUBLIC

  • 撤銷 east 用戶的 resource 系統權限
    revoke resource from east;

  • 對象授權

grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]
  • obj_privi:表示對象的權限,可以是 ALTER、EXECUTE、SELECT、UPDATE 和 INSERT 等。

  • role:角色名。

  • user:被授權的用戶名。

  • with admin option:表示被授權者可再將系統權限授予其他的用戶。

  • with hierarchy option:在對象的子對象(在視圖上再建立視圖)上授權給用戶。

  • 給用戶 xifang 授予 select、insert、delete 和 update 表 soctt.emp 的權限
    grant select,insert,delete,update on scott.emp to xifang;

  • 回收對象權限
    revoke obj_privi | all on schema.object from user | role | public cascade constraints

  • obj_privi:表示對象的權限。

  • public:保留字,代表 Oracle 系統的所有權限。

  • cascade ascade constraints:表示有關聯關係的權限也被回收。

  • 從 xifang 用戶回收 scott.emp 表的 update 和 delete 權限
    revoke delete,update on scott.emp from xifang;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章