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;兼容性SQL92SQL92 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 允許向別人賦予同樣權限.。
GRANT語句的語法形式有哪些
(1)語句許可 GRANT {ALL | statement[,。
n]} TO security_account[,。
。n] Statement代表語句許可的類型,可以是以下的類型: CREATE DATABASE:創建數據庫語句 CREATE DEFAULT:創建默認對象語句 CREATE PROCEDURE:創建存儲過程語句 CREATE RULE:創建規則對象語句 CREATE TABLE:創建表語句 CREATE VIEW:創建視圖語句 BACKUP DATABASE:備份數據庫語句 BACKUP LOG:備份日志語句 (2)對象許可 GRANT{ALL [PRIVILEGES] | permission[,。
。
n] } { [ (Column[,。
。n])] ON {table | view} | ON {table | view}[(column[,。
n])] | ON {stored_procedure | extended_procedure} } TO security_account[,。 。
。n] [WITH GRANT OPTION] [AS {group | role}] 下面是一個實例,打開數據庫game,然后對gamer角色授予author表的SELECT許可,允許gamer角色進行數據庫檢索。
接著對三個用戶授予INSERT、DELETE和UPDATE許可。 最后,授予teacher角色CREATE TABLE語句許可。
USE game GO GRANT SELECT ON author TO gamer GO GRANT INSERT,DELETE,UPDATE ON author TO Mike,Henry,Ronald GO GRANT CREATE TABLE TO teacher GO。
grant語句的完整格式
1、說明:創建數據庫
CREATE DATABASE database-name
2、說明:刪除數據庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack','c:\mssql7backup\MyNwind_*'
--- 開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:創建新表
create table tabname(col1 type1 [not null] [primary key],col2type2 [not null],..)
根據已有的表創建新表:
A:create table tab_new like tab_old (使用舊表創建新表)
B:create table tab_new as select col1,col2… from tab_olddefinition only
5、說明:
刪除新表:drop table tabname
6、說明:
增加一個列:Alter table tabname add column col type
注:列增加后將不能刪除。DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:
添加主鍵:Alter table tabname add primary key(col)
說明:
刪除主鍵:Alter table tabname drop primary key(col)
8、說明:
創建索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
注:索引是不可更改的,想更改必須刪除重新建。
9、說明:
創建視圖:create view viewname as select statement
刪除視圖:drop view viewname
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 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 參考 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 允許向別人賦予同樣權限.。
如何在一個grant語句里授權多個庫
GRANT在安全系統中創建項目,使當前數據庫中的用戶得以處理當前數據庫中的數據或執行特定的 Transact-SQL 語句。
語法語句權限:GRANT { ALL | statement [ ,。n ] } TO security_account [ ,。
n ]對象權限:GRANT { ALL [ PRIVILEGES ] | permission [ ,。n ] } { [ ( column [ ,。
n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,。n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,。
n ] [ WITH GRANT OPTION ] [ AS { group | role } ]參數ALL表示授予所有可用的權限。對于語句權限,只有 sysadmin 角色成員可以使用 ALL。
對于對象權限,sysadmin 和 db_owner 角色成員和數據庫對象所有者都可以使用 ALL。statement是被授予權限的語句。
語句列表可以包括: CREATE DATABASECREATE DEFAULTCREATE FUNCTIONCREATE PROCEDURECREATE RULECREATE TABLECREATE VIEWBACKUP DATABASEBACKUP LOG n一個占位符,表示此項可在逗號分隔的列表中重復。TO指定安全帳戶列表。
security_account是權限將應用的安全帳戶。安全帳戶可以是: Microsoft? SQL Server? 用戶。
SQL Server 角色。Microsoft Windows NT? 用戶。
Windows NT 組。 當權限被授予一個 SQL Server 用戶或 Windows NT 用戶帳戶,指定的 security_account 是權限能影響到的唯一帳戶。
若權限被授予 SQL Server 角色或 Windows NT 組,權限可影響到當前數據庫中該組或該角色成員的所有用戶。若組或角色和它們的成員之間存在權限沖突,最嚴格的權限 (DENY) 優先起作用。
security_account 必須在當前數據庫中存在;不可將權限授予其它數據庫中的用戶、角色或組,除非已為該用戶在當前數據庫中創建或給予了訪問權限。兩個特殊的安全帳戶可用于 GRANT 語句。
授予 public 角色的權限可應用于數據庫中的所有用戶。授予 guest 用戶的權限可為所有在數據庫中沒有用戶帳戶的用戶使用。
當授予某個 Windows NT 本地組或全局組權限時,請指定在其上定義該組的域名或計算機名,然后依次輸入反斜線和組名。但是,若要授予訪問 Windows NT 內置本地組的權限,請指定 BUILTIN 而不是域名或計算機名。
PRIVILEGES是可以包含在符合 SQL-92 標準的語句中的可選關鍵字。permission是當前授予的對象權限。
當在表、表值函數或視圖上授予對象權限時,權限列表可以包括這些權限中的一個或多個:SELECT、INSERT、DELETE、REFENENCES 或 UPDATE。列列表可以與 SELECT 和 UPDATE 權限一起提供。
如果列列表未與 SELECT 和 UPDATE 權限一起提供,那么該權限應用于表、視圖或表值函數中的所有列。在存儲過程上授予的對象權限只可以包括 EXECUTE。
在標量值函數上授予的對象權限可以包括 EXECUTE 和 REFERENCES。為在 SELECT 語句中訪問某個列,該列上需要有 SELECT 權限。
為使用 UPDATE 語句更新某個列,該列上需要有 UPDATE 權限。為創建引用某個表的 FOREIGN KEY 約束,該表上需要有 REFERENCES 權限。
為使用引用某個對象的 WITH SCHEMABINDING 子句創建 FUNCTION 或 VIEW,該對象上需要有 REFERENCES 權限。column是當前數據庫中授予權限的列名。
table是當前數據庫中授予權限的表名。view是當前數據庫中被授予權限的視圖名。
stored_procedure是當前數據庫中授予權限的存儲過程名。extended_procedure是當前數據庫中授予權限的擴展存儲過程名。
user_defined_function是當前數據庫中授予權限的用戶定義函數名。WITH GRANT OPTION表示給予了 security_account 將指定的對象權限授予其它安全帳戶的能力。
WITH GRANT OPTION 子句僅對對象權限有效。AS {group | role}指當前數據庫中有執行 GRANT 語句權力的安全帳戶的可選名。
當對象上的權限被授予一個組或角色時使用 AS,對象權限需要進一步授予不是組或角色的成員的用戶。因為只有用戶(而不是組或角色)可執行 GRANT 語句,組或角色的特定成員授予組或角色權力之下的對象的權限。
注釋不允許有跨數據庫權限;只能將當前數據庫中的對象和語句的權限授予當前數據庫中的用戶。如果用戶需要另一個數據庫中的對象的權限,請在該數據庫中創建用戶帳戶,或者授權用戶帳戶訪問該數據庫以及當前數據庫。
說明 系統存儲過程是例外,因為 EXECUTE 權限已經授予 public 角色,允許任何人去執行。但是在執行系統存儲過程后,將檢查用戶的角色成員資格。
如果此用戶不是運行此存儲過程所需要的適當的固定服務器或數據庫角色的成員,則此存儲過程不會繼續執行。REVOKE 語句可用于刪除已授予的權限,DENY 語句可用于防止用戶通過 GRANT 語句獲得權限給他們的用戶帳戶。
授予權限刪除所授予級別(用戶、組或角色)上的已拒絕權限或已廢除權限。在另一級別(諸如包含此用戶的組或角色)上被拒絕的同一權限優先起作用。
但是,雖然在另一級別上所廢除的同一權限仍然適用,但它并不阻止用戶訪問該對象。如果用戶激活應用程序角色,對此用戶通過該應用程序角色訪問的任何對。
求解oracle的grant語句:每個職工只對自己的記錄有select權力
grant語句授予權限的對象是oracle的連接用戶(信息存儲在系統數據字典里),不是用戶表數據中的數據用戶。
分布式數據庫系統中、客戶端訪問的是總的服務器
grant select on (某用戶).worker to 另一用戶
對于一個系統、使用人員要么是管理員、要么是普通職工。
普通職工接觸的是系統的前臺、而可視的只有符合自己職工編號對應的數據。
所以你說這個權限完全不用也不必給,似乎也給不了。因為ORACLE系統數據字典里沒有存不是create 的user。