ag真人游戏

400-090-9964


教學文章

ag真人游戲開戶 基礎教程之:權限管理

時間:2020-05-06 來源:

1. 概要

每個數據庫對象都有一個所有者,默認情況下,所有者擁有該對象的所有權限

在數據庫中所有的權限都和角色掛鉤

權限分為兩部分:

系統權限或者數據庫用戶的屬性

數據庫對象上的操作權限(內置權限)

對超級用戶不做權限檢查,其它用戶走ACL(Access ControL List)

對于數據庫對象,開始只有所有者和超級用戶可以做任何操作,其它走ACL


2. 實例權限

由pg_hba.conf來控制

示例:

# TYPE DATABASE USER ADDRESS METHOD

# IPv4 local connections:

host all all 127.0.0.1/32 trust

host all postgres 0.0.0.0/0 reject

host all all 0.0.0.0/0 md5

以下內容主要由指令grant\revoke完成用戶角色權限授予與取消

在線幫助:\h grant


3. 表空間權限

語法:

GRANT { CREATE | ALL [ PRIVILEGES ] } ON TABLESPACE tablespace_name [, ...] TO role_specification [, ...] [ WITH GRANT OPTION ]

示例:

表空間路徑:/home/postgres/data/user_t

創建表空間:CREATE TABLESPACE tbls_t OWNER user_t LOCATION '/home/postgres/data/user_t';

表空間授權:grant create on tablespace tbls_t to u3;

查看權限:\db+


4. 數據庫權限

包括允許連接數據庫,允許在數據庫中創建schema。

默認情況下,數據庫在創建后

允許public角色連接,即允許任何人連接。

不允許除了超級用戶和owner之外的任何人在數據庫中創建schema。

會自動創建名為public 的schema,這個schema的all權限已經賦予給public角色,即允許任何人在里面創建對象。

語法:

GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }

ON DATABASE database_name [, ...]

TO role_specification [, ...] [ WITH GRANT OPTION ]

備注:WITH GRANT OPTION表示被賦予權限的用戶,拿到對應的權限后,還能將對應的權限賦予給其他人,否則只能自己有這個權限,但是不能再賦予給其他人

示例:

create database testdb tablespace tbls_t;

grant connect on database testdb to u1;

#連接驗證

\c testdb u1

#創建對象驗證

create table t1(id int);

#注意:這是創建表指定表空間后,還會存放在默認表空間中,這里是涉及到表空間的授權。

create table t1(id int) tablespace tbls_t;

#可以創建表對象,存放到默認表空間中(reltablespace字段值為0)

select relname ,reltablespace,relowner from pg_class where relname='t1';


5. schema權限

包括允許查看schema中的對象,允許在schema中創建對象;

默認情況下新建的schema的權限不會賦予給public角色;

因此除了超級用戶和owner,任何人都沒有權限查看schema中的對象或者在schema中新建對象。

語法:

GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }

ON SCHEMA schema_name [, ...]

TO role_specification [, ...] [ WITH GRANT OPTION ]


6. 對象級別的權限

每種類型的對象權限屬性都不一樣,以表對象為例:

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }

[, ...] | ALL [ PRIVILEGES ] }

ON { [ TABLE ] table_name [, ...]

| ALL TABLES IN SCHEMA schema_name [, ...] }

TO role_specification [, ...] [ WITH GRANT OPTION ]


7. 取消授權

REVOKE

語法格式如下:

REVOKE permission_type ON table_name FROM user_name;

其中permission_type和table_name含義與GRANT指令中相同

\h revoke


8. 查看理解權限

顯示角色屬性(包含系統權限)

\du

\du+ [username]

查看系統表

select * from pg_roles[pg_user];

查看某用戶或角色的權限

select * from information_schema.table_privileges where grantee='u1';

顯示對象的訪問權限列表

\z

\dp [tablename]

#得到權限說明如下

Schema | Name | Type | Access privileges | Column privileges | Policies

--------+-----------------+----------+--------------------------------+-------------------+----------

public | sbtest1 | table | postgres=arwdDxt/postgres +| |

| | | postgres=a*r*w*d*D*x*t*/postgres | |

public | sbtest10 | table | postgres=arwdDxt/postgres | |

public | sbtest10_id_seq | sequence | | |

public | sbtest11 | table | postgres=arwdDxt/postgres | |

public | sbtest11_id_seq | sequence | | |

public | sbtest12 | table | postgres=arwdDxt/postgres | |

public | sbtest12_id_seq | sequence | | |

解釋一下 Access privileges

rolename=xxx 其中rolename就是被賦予權限的用戶名,即權限被賦予給誰了?

=xxx 表示這個權限賦予給了public角色,即所有人

/yyyy 表示是誰賦予的這個權限

權限的含義如下:

rolename=xxxx -- privileges granted to a role

=xxxx -- privileges granted to PUBLIC

r -- SELECT ("read")

w -- UPDATE ("write")

a -- INSERT ("append")

d -- DELETE

D -- TRUNCATE

x -- REFERENCES

t -- TRIGGER

X -- EXECUTE

U -- USAGE

C -- CREATE

c -- CONNECT

T -- TEMPORARY

arwdDxt -- ALL PRIVILEGES (for tables, varies for other objects)

* -- grant option for preceding privilege

/yyyy -- role that granted this privilege

示例:用戶權限授予與取消

\c postgres postgres

create database testdb

\c testdb postgres

create table t1(id int) ;

select * from information_schema.table_privileges where grantee='u1';

\dp t1

create user u1;

grant all on table t1 to u1;

select * from information_schema.table_privileges where grantee='u1';

\dp t1

revoke select on table t1 from u2;

ag真人游戏banquansuoyou@agzhenrenyouxi (cuug,agzhenrenyouxi ) copyright 2017 all rights reserved jingicpbei11008061hao jinggongwang110108006275hao

CUUG旗下網站:fuelfromthesun.com.cn fuelfromthesun.com oracle.fuelfromthesun.com bbs.fuelfromthesun.com bd.fuelfromthesun.com

電話:010-59426307 010-59426319 郵政編碼:100089

海淀校區:北京市海淀區紫竹院路88號紫竹花園4號樓D座703(CUUG)

澳门agapp ag真人手机版 真人ag手机版 ag旗舰厅下载 ag体育滚球