請問如何用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;。
如何用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;
在SQL語言中授權的操作是通過----------語句實現的
grant語句。
具體語法可能不同的DBMS有所區別,查看各DBMS的手冊。PG中的語法:GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRIGGER } [,。
] | ALL [ PRIVILEGES ] } ON [ TABLE ] tablename [, 。] TO { username | GROUP groupname | PUBLIC } [, 。
] [ WITH GRANT OPTION ]GRANT { { USAGE | SELECT | UPDATE } [,。] | ALL [ PRIVILEGES ] } ON SEQUENCE sequencename [, 。
] TO { username | GROUP groupname | PUBLIC } [, 。] [ WITH GRANT OPTION ]GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,。
] | ALL [ PRIVILEGES ] } ON DATABASE dbname [, 。] TO { username | GROUP groupname | PUBLIC } [, 。
] [ WITH GRANT OPTION ]GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, 。] ] ) [, 。
] TO { username | GROUP groupname | PUBLIC } [, 。] [ WITH GRANT OPTION ]GRANT { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE langname [, 。
] TO { username | GROUP groupname | PUBLIC } [, 。] [ WITH GRANT OPTION ]GRANT { { CREATE | USAGE } [,。
] | ALL [ PRIVILEGES ] } ON SCHEMA schemaname [, 。] TO { username | GROUP groupname | PUBLIC } [, 。
] [ WITH GRANT OPTION ]GRANT { CREATE | ALL [ PRIVILEGES ] } ON TABLESPACE tablespacename [, 。] TO { username | GROUP groupname | PUBLIC } [, 。
] [ WITH GRANT OPTION ]GRANT role [, 。] TO username [, 。
] [ WITH ADMIN OPTION ]。