Oracle Grant / REVOKE 正解
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
允許向別人賦予同樣許可權.
**************************************************************************************************************************
我以scott/tiger登入以後建立了表以後插入資料提示我插入成功了,但是在查詢資料的時候是沒有記錄的,原因是我的scott使用者沒有對這個表插入的許可權。這時要以system登入以後用grant賦予scottr 中某個表的相應的許可權。
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)物件的許可權,建立者自動擁有物件
------------------註明:
、許可權是使用者對一項功能的執行權力。在Oracle 中,根據系統管理方式不同,將許可權分為系統許可權 與實體許可權 兩類。
系統許可權 是指是否被授權使用者可以連線到資料庫上,在資料庫中可以進行哪些系統操作。
實體許可權 是指使用者對具體的模式實體 (schema)所擁有的許可權。這樣講可以有些模糊。
舉個例子來說:select any table是系統許可權,它表示可以檢視任何表。而select on table1是實體許可權,表示對錶table1的查詢許可權。
二、見下下面的表
三、系統許可權授權命令的使用
語法:
GRANT 許可權名 TO 使用者|角色|PUBLIC
其中,PUBLIC表示將許可權賦給資料庫中所有的使用者
例:賦給使用者USER1許可權CREATE TABLE的授權命令如下:
SQL>GRANT CREATE TABLE TO USER1;
授權語句還可以增加WITH ADMIN OPTION選項,表示被授權的使用者可以將它所得許可權賦給其它使用者,如:
SQL>GRANT CREATE TABLE,CREATE VIEW TO USER1,USER2 WITH ADMIN OPTION;
若要了解各使用者所擁有的系統許可權,可以查詢資料字典USER_SYS_PRIVS、ROLE_SYS_PRIVS。
若要回收許可權,則使用REVOKE命令,如:
SQL>REVOKE CREATE TABLE FROM USER1;
四、實體許可權管理
實體許可權是指某一使用者對某一特定schema物件的操作許可權。
1.實體許可權分類
不同的實體型別有不同的實體許可權,如下表
2.實體許可權的授命令
語法如下:
GRANT 實體許可權名|ALL TO 使用者|角色|PUBLIC
其中,ALL表示實體的所有實體許可權。
如:
SQL>GRANT SELECT ON BOOKS_QUTHORS TO USER1;
以下語句用來查詢表的實體許可權的授權資訊:
SQL>SELECT * FROM USER_TAB_PRIVES
若要回收實體許可權,使用REVOKE,其語法如下:
REVOKE 實體許可權名|ALL ON 實體名 FROM 使用者名稱|角色名|PUBLIC。
alter any cluster 修改任意簇的許可權
alter any index 修改任意索引的許可權
alter any role 修改任意角色的許可權 alter any cluster
alter any sequence 修改任意序列的許可權
alter any snapshot 修改任意快照的許可權
alter any table 修改任意表的許可權
alter any trigger 修改任意觸發器的許可權
alter cluster 修改擁有簇的許可權
alter database 修改資料庫的許可權
alter procedure 修改擁有的儲存過程許可權
alter profile 修改資源限制簡表的許可權
alter resource cost 設定佳話資源開銷的許可權
alter rollback segment 修改回滾段的許可權
alter sequence 修改擁有的序列許可權
alter session 修改資料庫會話的許可權
alter sytem 修改資料庫伺服器設定的許可權
alter table 修改擁有的表許可權
alter tablespace 修改表空間的許可權
alter user 修改使用者的許可權
analyze 使用analyze命令分析資料庫中任意的表、索引和簇
audit any 為任意的資料庫物件設定審計選項
audit system 允許系統操作審計
backup any table 備份任意表的許可權
become user 切換使用者狀態的許可權
commit any table 提交表的許可權
create any cluster 為任意使用者建立簇的許可權
create any index 為任意使用者建立索引的許可權
create any procedure 為任意使用者建立儲存過程的許可權
create any sequence 為任意使用者建立序列的許可權
create any snapshot 為任意使用者建立快照的許可權
create any synonym 為任意使用者建立同義名的許可權
create any table 為任意使用者建立表的許可權
create any trigger 為任意使用者建立觸發器的許可權
create any view 為任意使用者建立檢視的許可權
create cluster 為使用者建立簇的許可權
create database link 為使用者建立的許可權
create procedure 為使用者建立儲存過程的許可權
create profile 建立資源限制簡表的許可權
create public database link 建立公共資料庫鏈路的許可權
create public synonym 建立公共同義名的許可權
create role 建立角色的許可權
create rollback segment 建立回滾段的許可權
create session 建立會話的許可權
create sequence 為使用者建立序列的許可權
create snapshot 為使用者建立快照的許可權
create synonym 為使用者建立同義名的許可權
create table 為使用者建立表的許可權
create tablespace 建立表空間的許可權
create user 建立使用者的許可權
create view 為使用者建立檢視的許可權
delete any table 刪除任意表行的許可權
delete any view 刪除任意檢視行的許可權
delete snapshot 刪除快照中行的許可權
delete table 為使用者刪除錶行的許可權
delete view 為使用者刪除檢視行的許可權
drop any cluster 刪除任意簇的許可權
drop any index 刪除任意索引的許可權
drop any procedure 刪除任意儲存過程的許可權
drop any role 刪除任意角色的許可權
drop any sequence 刪除任意序列的許可權
drop any snapshot 刪除任意快照的許可權
drop any synonym 刪除任意同義名的許可權
drop any table 刪除任意表的許可權
drop any trigger 刪除任意觸發器的許可權
drop any view 刪除任意檢視的許可權
drop profile 刪除資源限制簡表的許可權
drop public cluster 刪除公共簇的許可權
drop public database link 刪除公共資料鏈路的許可權
drop public synonym 刪除公共同義名的許可權
drop rollback segment 刪除回滾段的許可權
drop tablespace 刪除表空間的許可權
drop user 刪除使用者的許可權
execute any procedure 執行任意儲存過程的許可權
execute function 執行儲存函式的許可權
execute package 執行儲存包的許可權
execute procedure 執行使用者儲存過程的許可權
force any transaction 管理未提交的任意事務的輸出許可權
force transaction 管理未提交的使用者事務的輸出許可權
grant any privilege 授予任意系統特權的許可權
grant any role 授予任意角色的許可權
index table 給表加索引的許可權
insert any table 向任意表中插入行的許可權
insert snapshot 向快照中插入行的許可權
insert table 向使用者表中插入行的許可權
insert view 向使用者檢視中插行的許可權
lock any table 給任意表加鎖的許可權
manager tablespace 管理(備份可用性)表空間的許可權
references table 參考表的許可權
restricted session 建立有限制的資料庫會話的許可權
select any sequence 使用任意序列的許可權
select any table 使用任意表的許可權
select snapshot 使用快照的許可權
select sequence 使用使用者序列的許可權
select table 使用使用者表的許可權
select view 使用檢視的許可權
unlimited tablespace 對錶空間大小不加限制的許可權
update any table 修改任意表中行的許可權
update snapshot 修改快照中行的許可權
update table 修改使用者表中的行的許可權
update view 修改檢視中行的許可權
http://blog.csdn.net/wangshengfeng1986211/article/details/6004228
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-761065/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle/PLSQL: Grant/Revoke PrivilegesOracleSQL
- Oracle 許可權(grant、revoke)Oracle
- oracle受權與回收許可權grant和revokeOracle
- oracle常見受權與回收許可權 grant和revokeOracle
- 詳解GuassDB資料庫許可權命令:GRANT和REVOKE資料庫
- mysql操作命令梳理(4)-grant授權和revoke回收許可權MySql
- 淺談MySQL中授權(grant)和撤銷授權(revoke)用法詳解MySql
- oracle grant 授權語句Oracle
- oracle grant 語句的GRANT privilige TO user IDENTIFIED BY password 語法OracleIDE
- Oracle檢視授權(with grant option)Oracle
- Oracle users / 許可權 / grant privOracle
- SQL__REVOKESQL
- grant with admin/grant option
- 氣泡排序正解排序
- Difference of Revoke System Privileges and Object PrivilegesObject
- SQL__GRANTSQL
- mysql grant 命令MySql
- MySQL Grant命令MySql
- revoke EXECUTE privileges on powerful packages from PUBLICPackage
- grant 操作硬解析
- 關於WITH GRANT OPTION
- 關於GRANT賦權時,WITH GRANT OPTION和WITH ADMIN OPTION的使用
- mysqld --skip-grant-tablesMySql
- Oracle ORA - 01720 grant option does not exist for..報錯解決Oracle
- Oracle: Grant 對high loading system,bind variable的影響Oracle
- 使用skip-grant-tables啟動庫後不能執行grant語句
- oracle grant 語句的GRANT privilige TO user IDENTIFIED BY password 語法的再次試驗-user已經存在但是賦予不同密碼OracleIDE密碼
- Redis分散式鎖的正解實現方式Redis分散式
- Activity的Launch mode詳解 singleTask正解
- 真正解決iframe高度自適應問題
- the --skip-grant-tables option so it cannot
- Import all grant statement of users in mysql schema !ImportMySql
- with grant option與with admin option區別
- Oracle 11gR2 注意revoke dba 會一併回收通過”quota“分配的表空間限額Oracle
- grant debug connect session to db_test;Session
- dbms_java.grant_Permissio 使用/ORA-29532Java
- 香港伺服器套餐多樣性正解看過來呢?伺服器
- 管理員能否revoke表擁有者delete表的許可權delete