請問如何用SQL語句為指定用戶授權
SQL語言用GRANT語句向用戶授予操作權限,GRANT語句的一般格式為:
GRANT [,]。
[ON ]
TO [,]。
[WITH GRANT OPTION];
其語義為:將對指定操作對象的指定操作權限授予指定的用戶。
不同類型的操作對象有不同的操作權限,常見的操作權限如表3-4所示。
表3-4 不同對象類型允許的操作權限
對象 對象類型 操作權限
屬性列 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES
視圖 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES
基本表 TABLE SELECT, INSERT, UPDATE, ALTER, INDEX,DELETE ALL PRIVIEGES
數據庫 DATABASE CREATETAB
詳細信息…
接受權限的用戶可以是一個或多個具體用戶,也可以是PUBLIC即全體用戶。
如果指定了WITH GRANT OPTION子句,則獲得某種權限的用戶還可以把這種權限再授予別的用戶。如果沒有指定WITH GRANT OPTION子句,則獲得某種權限的用戶只能使用該權限,但不能傳播該權限。
例1
把查詢Student表權限授給用戶U1
GRANT SELECT ON TABLE Student TO U1;
例2
把對Student表和Course表的全部權限授予用戶U2和U3
GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;
例3
把對表SC的查詢權限授予所有用戶
GRANT SELECT ON TABLE SC TO PUBLIC;
例4
把查詢Student表和修改學生學號的權限授給用戶U4
詳細信息…
這里實際上要授予U4用戶的是對基本表Student的SELECT權限和對屬性列Sno的UPDATE權限。授予關于屬性列的權限時必須明確指出相應屬性列名。完成本授權操作的SQL語句為:
GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;
例5
把對表SC的INSERT權限授予U5用戶,并允許他再將此權限授予其他用戶
GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION;
詳細信息…
執行此SQL語句后,U5不僅擁有了對表SC的INSERT權限,還可以傳播此權限,即由U5用戶發上述GRANT命令給其他用戶。
例如U5可以將此權限授予U6:
GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION;
同樣,U6還可以將此權限授予U7:
GRANT INSERT ON TABLE SC TO U7;
因為U6未給U7傳播的權限,因此U7不能再傳播此權限。
例6
DBA把在數據庫S_C中建立表的權限授予用戶U8
GRANT CREATETAB ON DATABASE S_C TO U8;
如何用SQL語句對所有的用戶表授權
RANT語句的一般格式為:GRANT <權限>[,<權限>]。
[ON <對象類型> <對象名>] TO <用戶>[,<用戶>]。 [WITH GRANT OPTION];其語義為:將對指定操作對象的指定操作權限授予指定的用戶。
不同類型的操作對象有不同的操作權限,常見的操作權限如表3-4所示。 表3-4 不同對象類型允許的操作權限 對象 對象類型 操作權限 屬性列 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES 視圖 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES 基本表 TABLE SELECT, INSERT, UPDATE, ALTER, INDEX,DELETE ALL PRIVIEGES 數據庫 DATABASE CREATETAB 詳細信息… 接受權限的用戶可以是一個或多個具體用戶,也可以是PUBLIC即全體用戶。
如果指定了WITH GRANT OPTION子句,則獲得某種權限的用戶還可以把這種權限再授予別的用戶。如果沒有指定WITH GRANT OPTION子句,則獲得某種權限的用戶只能使用該權限,但不能傳播該權限。
例1 把查詢Student表權限授給用戶U1 GRANT SELECT ON TABLE Student TO U1; 例2 把對Student表和Course表的全部權限授予用戶U2和U3 GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3; 例3 把對表SC的查詢權限授予所有用戶 GRANT SELECT ON TABLE SC TO PUBLIC; 例4 把查詢Student表和修改學生學號的權限授給用戶U4 詳細信息… 這里實際上要授予U4用戶的是對基本表Student的SELECT權限和對屬性列Sno的UPDATE權限。授予關于屬性列的權限時必須明確指出相應屬性列名。
完成本授權操作的SQL語句為:GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;例5 把對表SC的INSERT權限授予U5用戶,并允許他再將此權限授予其他用戶 GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION; 詳細信息… 執行此SQL語句后,U5不僅擁有了對表SC的INSERT權限,還可以傳播此權限,即由U5用戶發上述GRANT命令給其他用戶。例如U5可以將此權限授予U6:GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION;同樣,U6還可以將此權限授予U7:GRANT INSERT ON TABLE SC TO U7;因為U6未給U7傳播的權限,因此U7不能再傳播此權限。
例6 DBA把在數據庫S_C中建立表的權限授予用戶U8 GRANT CREATETAB ON DATABASE S_C TO U8;。
Oracle里授權語句grant create session to username;grant create
connect :可以登錄Oracle,不可以創建實體,不可以創建數據庫結構。
session 創建會話的權限
另外:
DBA: 擁有全部特權,是系統最高權限,只有DBA才可以創建數據庫結構。
RESOURCE:擁有Resource權限的用戶只可以創建實體,不可以創建數據庫結構。
對于普通用戶:授予connect, resource權限。
對于DBA管理用戶:授予connect,resource, dba權限。
系統權限授權命令:
系統權限只能由DBA用戶授出:sys, system(最開始只能是這兩個用戶)
授權命令:SQL> grant connect, resource, dba to 用戶名1 [,用戶名2]。;
注:普通用戶通過授權可以具有與system相同的用戶權限,但永遠不能達到與sys用戶相同的權限,system用戶的權限也可以被回收。