A. sql的grant語句用法
GRANT
名稱
GRANT — 賦予一個用戶,一個組或所有用戶訪問許可權
GRANT privilege [, ...] ON object [, ...]
TO { PUBLIC | GROUP group | username }
輸入
privilege
可能的許可權有:
SELECT
訪問聲明的表/視圖的所有列/欄位.
INSERT
向聲明的表中插入所有列欄位.
UPDATE
更新聲明的所有列/欄位.
DELETE
從聲明的表中刪除所有行.
RULE
在表/視圖上定義規則 (參見 CREATE RULE 語句).
ALL
賦予所有許可權.
object
賦予許可權的對象名.可能的對象是:
table (表)
view (視圖)
sequence (序列)
index (索引)
PUBLIC
代表是所有用戶的簡寫.
GROUP group
將要賦予許可權的組 group .目前的版本中,組必須是用下面方法顯式創建的.
username
將要賦予許可權的用戶名.PUBLIC 是代表所有用戶的簡寫.
輸出
CHANGE
如果成功,返回此信息.
ERROR: ChangeAcl: class "object" not found
如果所聲明的對象不可用或不可能對聲明的組或用戶賦予許可權.
描述
GRANT 允許對象的創建者給某用戶或某組或所有用戶(PUBLIC)某些特定的許可權.對象創建後,除了創建者外,除非創建者賦予(GRANT)許可權,其他人沒有訪問對象的許可權.
一旦用戶有某對象的許可權,他就可以使用那個特權.不需要給創建者賦予(GRANT)對象的許可權,創建者自動擁有對象的所有許可權,包括刪除它的許可權.
注意
目前,要想在 Postgres 裡面只賦予幾列許可權,你必須創建一個包含那幾列的視圖(view),然後把許可權賦予那幾個視圖。
使用 psql \z 命令獲取關於現存對象許可權的更多信息:
Database = lusitania
+------------------+---------------------------------------------+
| Relation | Grant/Revoke Permissions |
+------------------+---------------------------------------------+
| mytable | {"=rw","miriam=arwR","group todos=rw"} |
+------------------+---------------------------------------------+
Legend:
uname=arwR -- privileges granted to a user
group gname=arwR -- privileges granted to a GROUP
=arwR -- privileges granted to PUBLIC
r -- SELECT
w -- UPDATE/DELETE
a -- INSERT
R -- RULE
arwR -- ALL
小技巧: 目前,要創建一個 GROUP (組), 你將不得不手工向表 pg_group 中插入數據,像:
INSERT INTO pg_group VALUES ('todos');
CREATE USER miriam IN GROUP todos;
參考 REVOKE 語句重新分配訪問許可權.
用法
給所有用戶向表 films 插入記錄的許可權:
GRANT INSERT ON films TO PUBLIC;
賦予用戶 manuel 操作視圖 kinds 的所有許可權:
GRANT ALL ON kinds TO manuel;
兼容性
SQL92
SQL92 GRANT 語法允許對表中的某單獨列/欄位設置許可權,並且允許設置一許可權以賦予別人相同許可權.
GRANT privilege [, ...]
ON object [ ( column [, ...] ) ] [, ...]
TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]
這些欄位與 Postgres 實現是兼容的,除了下面一些例外:
privilege
SQL92 允許聲明附加的許可權:
SELECT
REFERENCES
允許在一個聲明的表的整合約束中使用某些或全部列/欄位.
USAGE
允許使用一個域,字元集,集合或事務.如果聲明的對象不是表/視圖, privilege 只能聲明為 USAGE.
object
[ TABLE ] table
SQL92 允許一個附加的非函數關鍵字 TABLE.
CHARACTER SET
允許使用聲明的字元集.
COLLATION
允許使用聲明的集合序列.
TRANSLATION
允許使用聲明的字元集轉換.
DOMAIN
允許使用聲明的域.
WITH GRANT OPTION
允許向別人賦予同樣許可權.
B. SQL:跨資料庫的視圖,如何給許可權;
兩個資料庫在一台機上的話,可以在資料庫安全那邊建立一個用戶名,把兩個資料庫的Select許可權(資料庫角色)都給他。然後在前端應用或連接資料庫的時候,用這個用戶名登入就可以了。
C. Oracle把視圖查詢許可權給某用戶的SQL是什麼
oracle給某用戶授權試圖查詢的SQL語句為:
SQL> grant select on v_$mystat to test1;
Grant succeeded.
這樣 test1用戶就擁有了 查詢v$mystat視圖的許可權了
收回許可權命令:
SQL>revoke select on v_$mystat from test1;
(3)授予視圖許可權sql擴展閱讀
oracle 的用戶管理的常用命令介紹:
1、創建用戶:create user 用戶名 identified by 密碼;
SQL> create user scw identified by 123;
2、修改其他用戶密碼 需要許可權;
SQL> conn system/123;
已連接。
SQL> alter user scw identified by 123;
3、賦予用戶連接資料庫的許可權:
SQL>grant create session to zhansgan;
4、查看當前用戶所有表的表名:
SQL> select table_name from user_tables;
D. 資料庫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;
E. 用SQL語句怎麼設置許可權
SQL是Structured Quevy Language(結構化查詢語言)的縮寫。SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。在使用它時,只需要發出「做什麼」的命令,「怎麼做」是不用使用者考慮的。SQL功能強大、簡單易學、使用方便,已經成為了資料庫操作的基礎,並且現在幾乎所有的資料庫均支持SQL。
##1 二、SQL資料庫數據體系結構
SQL資料庫的數據體系結構基本上是三級結構,但使用術語與傳統關系模型術語不同。在SQL中,關系模式(模式)稱為「基本表」(base table);存儲模式(內模式)稱為「存儲文件」(stored file);子模式(外模式)稱為「視圖」(view);元組稱為「行」(row);屬性稱為「列」(column)。名稱對稱如^00100009a^:
##1 三、SQL語言的組成
在正式學習SQL語言之前,首先讓我們對SQL語言有一個基本認識,介紹一下SQL語言的組成:
1.一個SQL資料庫是表(Table)的集合,它由一個或多個SQL模式定義。
2.一個SQL表由行集構成,一行是列的序列(集合),每列與行對應一個數據項。
3.一個表或者是一個基本表或者是一個視圖。基本表是實際存儲在資料庫的表,而視圖是由若干基本表或其他視圖構成的表的定義。
4.一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。每個存儲文件與外部存儲上一個物理文件對應。
5.用戶可以用SQL語句對視圖和基本表進行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區別,都是關系(表格)。
6.SQL用戶可以是應用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。SQL用戶也能作為獨立的用戶介面,供交互環境下的終端用戶使用。
##1 四、對資料庫進行操作
SQL包括了所有對資料庫的操作,主要是由4個部分組成:
1.數據定義:這一部分又稱為「SQL DDL」,定義資料庫的邏輯結構,包括定義資料庫、基本表、視圖和索引4部分。
2.數據操縱:這一部分又稱為「SQL DML」,其中包括數據查詢和數據更新兩大類操作,其中數據更新又包括插入、刪除和更新三種操作。
3.數據控制:對用戶訪問數據的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。
4.嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程序中使用的規則。
下面我們將分別介紹:
##2 (一)數據定義
SQL數據定義功能包括定義資料庫、基本表、索引和視圖。
首先,讓我們了解一下SQL所提供的基本數據類型:(如^00100009b^)
1.資料庫的建立與刪除
(1)建立資料庫:資料庫是一個包括了多個基本表的數據集,其語句格式為:
CREATE DATABASE <資料庫名> 〔其它參數〕
其中,<資料庫名>在系統中必須是唯一的,不能重復,不然將導致數據存取失誤。〔其它參數〕因具體資料庫實現系統不同而異。
例:要建立項目管理資料庫(xmmanage),其語句應為:
CREATE DATABASE xmmanage
(2) 資料庫的刪除:將資料庫及其全部內容從系統中刪除。
其語句格式為:DROP DATABASE <資料庫名>
例:刪除項目管理資料庫(xmmanage),其語句應為:
DROP DATABASE xmmanage
2.基本表的定義及變更
本身獨立存在的表稱為基本表,在SQL語言中一個關系唯一對應一個基本表。基本表的定義指建立基本關系模式,而變更則是指對資料庫中已存在的基本表進行刪除與修改。