欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > PostgreSQL 角色與用戶管理介紹

PostgreSQL 角色與用戶管理介紹

熱門標簽:青白江400企業電話申請 crm外呼系統聯系方式 內蒙古營銷智能外呼系統哪個好 智能外呼系統官網 長沙電銷外呼防封卡是什么 外呼線路資源屬于電信業務嗎 呼和浩特外呼系統原理是什么 小裙科技電銷機器人怎樣 河南電話外呼系統招商

一、角色與用戶的區別

角色就相當于崗位:角色可以是經理,助理。
用戶就是具體的人:比如陳XX經理,朱XX助理,王XX助理。
在PostgreSQL 里沒有區分用戶和角色的概念,"CREATE USER" 為 "CREATE ROLE" 的別名,這兩個命令幾乎是完全相同的,唯一的區別是"CREATE USER" 命令創建的用戶默認帶有LOGIN屬性,而"CREATE ROLE" 命令創建的用戶默認不帶LOGIN屬性(CREATE USER is equivalent to CREATE ROLE except that CREATE USER assumes LOGIN by default, while CREATE ROLE does not)。

1.1 創建角色與用戶

CREATE ROLE 語法

CREATE ROLE name [ [ WITH ] option [ ... ] ]
where option can be:
      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

創建david 角色和sandy 用戶
postgres=# CREATE ROLE david;  //默認不帶LOGIN屬性
CREATE ROLE
postgres=# CREATE USER sandy;  //默認具有LOGIN屬性
CREATE ROLE
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 david     | Cannot login                                   | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 sandy     |                                                | {}

postgres=#
postgres=# SELECT rolname from pg_roles ;
 rolname 
----------
 postgres
 david
 sandy
(3 rows)

postgres=# SELECT usename from pg_user;         //角色david 創建時沒有分配login權限,所以沒有創建用戶
 usename 
----------
 postgres
 sandy
(2 rows)

postgres=#
1.2 驗證LOGIN屬性
postgres@CS-DEV:~> psql -U david
psql: FATAL:  role "david" is not permitted to log in
postgres@CS-DEV:~> psql -U sandy
psql: FATAL:  database "sandy" does not exist
postgres@CS-DEV:~> psql -U sandy -d postgres
psql (9.1.0)
Type "help" for help.

postgres=> \dt
No relations found.
postgres=>
用戶sandy 可以登錄,角色david 不可以登錄。
1.3 修改david 的權限,增加LOGIN權限
postgres=# ALTER ROLE david LOGIN ;
ALTER ROLE
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 david     |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 sandy     |                                                | {}

postgres=# SELECT rolname from pg_roles ;
 rolname 
----------
 postgres
 sandy
 david
(3 rows)

postgres=# SELECT usename from pg_user;  //給david 角色分配login權限,系統將自動創建同名用戶david
 usename 
----------
 postgres
 sandy
 david
(3 rows)

postgres=#
1.4 再次驗證LOGIN屬性
postgres@CS-DEV:~> psql -U david -d postgres
psql (9.1.0)
Type "help" for help.

postgres=> \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 david     |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 sandy     |                                                | {}

postgres=>
david 現在也可以登錄了。

二、查看角色信息

psql 終端可以用\du 或\du+ 查看,也可以查看系統表 select * from pg_roles;
postgres=> \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 david     | Cannot login                                   | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 sandy     |                                                | {}

postgres=> \du+
                                    List of roles
 Role name |                   Attributes                   | Member of | Description
-----------+------------------------------------------------+-----------+-------------
 david     | Cannot login                                   | {}        |
 postgres  | Superuser, Create role, Create DB, Replication | {}        |
 sandy     |                                                | {}        |

postgres=> SELECT * from pg_roles;
 rolname  | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolconnlimit | rolpassword | rolvaliduntil | rolconfig |  oid 
----------+----------+------------+---------------+-------------+--------------+-------------+----------------+--------------+-------------+---------------+-----------+-------
 postgres | t        | t          | t             | t           | t            | t           | t              |           -1 | ********    |               |           |    10
 david    | f        | t          | f             | f           | f            | f           | f              |           -1 | ********    |               |           | 49438
 sandy    | f        | t          | f             | f           | f            | t           | f              |           -1 | ********    |               |           | 49439
(3 rows)

postgres=>

三、角色屬性(Role Attributes)

一個數據庫角色可以有一系列屬性,這些屬性定義了他的權限。

屬性 說明
login 只有具有 LOGIN 屬性的角色可以用做數據庫連接的初始角色名。
superuser 數據庫超級用戶
createdb 創建數據庫權限
createrole       允許其創建或刪除其他普通的用戶角色(超級用戶除外)
replication 做流復制的時候用到的一個用戶屬性,一般單獨設定。
password 在登錄時要求指定密碼時才會起作用,比如md5或者password模式,跟客戶端的連接認證方式有關
inherit 用戶組對組員的一個繼承標志,成員可以繼承用戶組的權限特性
... ...

 

四、創建用戶時賦予角色屬性

從pg_roles 表里查看到的信息,在上面創建的david 用戶時,默認沒有創建數據庫等權限。

postgres@CS-DEV:~> psql -U david -d postgres
psql (9.1.0)
Type "help" for help.

postgres=> \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
david | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
sandy | | {}

postgres=> CREATE DATABASE test;
ERROR: permission denied to create database
postgres=>
如果要在創建角色時就賦予角色一些屬性,可以使用下面的方法。
首先切換到postgres 用戶。
4.1 創建角色bella 并賦予其CREATEDB 的權限。
postgres=# CREATE ROLE bella CREATEDB ;
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
bella | Create DB, Cannot login | {}
david | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
sandy | | {}

postgres=#
4.2 創建角色renee 并賦予其創建數據庫及帶有密碼登錄的屬性。
postgres=# CREATE ROLE renee CREATEDB PASSWORD 'abc123' LOGIN;
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
bella | Create DB, Cannot login | {}
david | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
renee | Create DB | {}
sandy | | {}

postgres=#

4.3 測試renee 角色

a. 登錄
postgres@CS-DEV:~> psql -U renee -d postgres
psql (9.1.0)
Type "help" for help.

postgres=>
用renee 用戶登錄數據庫,發現不需要輸入密碼既可登錄,不符合實際情況。
b. 查找原因
在角色屬性中關于password的說明,在登錄時要求指定密碼時才會起作用,比如md5或者password模式,跟客戶端的連接認證方式有關。

查看pg_hba.conf 文件,發現local 的METHOD 為trust,所以不需要輸入密碼。

將local 的METHOD 更改為password,然后保存重啟postgresql。

c. 再次驗證

提示輸入密碼,輸入正確密碼后進入到數據庫。

d. 測試創建數據庫

創建成功。

五、給已存在用戶賦予各種權限

使用ALTER ROLE 命令。
ALTER ROLE 語法:
ALTER ROLE name [ [ WITH ] option [ ... ] ]
where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'timestamp'

ALTER ROLE name RENAME TO new_name

ALTER ROLE name [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER ROLE name [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
ALTER ROLE name [ IN DATABASE database_name ] RESET configuration_parameter
ALTER ROLE name [ IN DATABASE database_name ] RESET ALL
5.1 賦予bella 登錄權限
a. 查看現在的角色屬性
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 bella     | Create DB, Cannot login                        | {}
 david     |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 renee     | Create DB                                      | {}
 sandy     |                                                | {}

postgres=#
b. 賦予登錄權限
postgres=# ALTER ROLE bella WITH LOGIN;
ALTER ROLE
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 bella     | Create DB                                      | {}
 david     |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 renee     | Create DB                                      | {}
 sandy     |                                                | {}

postgres=#
5.2 賦予renee 創建角色的權限
postgres=# ALTER ROLE renee WITH CREATEROLE;
ALTER ROLE
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 bella     | Create DB                                      | {}
 david     |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 renee     | Create role, Create DB                         | {}
 sandy     |                                                | {}

postgres=#
5.3 賦予david 帶密碼登錄權限
postgres=# ALTER ROLE david WITH PASSWORD 'ufo456';
ALTER ROLE
postgres=#
5.4 設置sandy 角色的有效期
postgres=# ALTER ROLE sandy VALID UNTIL '2014-04-24';
ALTER ROLE
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 bella     | Create DB                                      | {}
 david     |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 renee     | Create role, Create DB                         | {}
 sandy     |                                                | {}

postgres=# SELECT * from pg_roles ;
 rolname  | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolconnlimit | rolpassword |     rolvaliduntil      | rolconfig |  oid 
----------+----------+------------+---------------+-------------+--------------+-------------+----------------+--------------+-------------+------------------------+-----------+-------
 postgres | t        | t          | t             | t           | t            | t           | t              |           -1 | ********    |                        |           |    10
 bella    | f        | t          | f             | t           | f            | t           | f              |           -1 | ********    |                        |           | 49440
 renee    | f        | t          | t             | t           | f            | t           | f              |           -1 | ********    |                        |           | 49442
 david    | f        | t          | f             | f           | f            | t           | f              |           -1 | ********    |                        |           | 49438
 sandy    | f        | t          | f             | f           | f            | t           | f              |           -1 | ********    | 2014-04-24 00:00:00+08 |           | 49439
(5 rows)

postgres=#

六、角色賦權/角色成員

在系統的角色管理中,通常會把多個角色賦予一個組,這樣在設置權限時只需給該組設置即可,撤銷權限時也是從該組撤銷。在PostgreSQL中,首先需要創建一個代表組的角色,之后再將該角色的membership 權限賦給獨立的角色即可。
6.1 創建組角色
postgres=# CREATE ROLE father login nosuperuser nocreatedb nocreaterole noinherit encrypted password 'abc123';
CREATE ROLE
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 bella     | Create DB                                      | {}
 david     |                                                | {}
 father    | No inheritance                                 | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 renee     | Create role, Create DB                         | {}
 sandy     |                                                | {}

postgres=#
6.2 給father 角色賦予數據庫test 連接權限和相關表的查詢權限。
postgres=# GRANT CONNECT ON DATABASE test to father;
GRANT
postgres=# \c test renee
You are now connected to database "test" as user "renee".
test=> \dt
No relations found.
test=> CREATE TABLE emp (
test(> id serial,
test(> name text);
NOTICE:  CREATE TABLE will create implicit sequence "emp_id_seq" for serial column "emp.id"
CREATE TABLE
test=> INSERT INTO emp (name) VALUES ('david'); 
INSERT 0 1
test=> INSERT INTO emp (name) VALUES ('sandy');
INSERT 0 1
test=> SELECT * from emp;
 id | name 
----+-------
  1 | david
  2 | sandy
(2 rows)

test=> \dt
       List of relations
 Schema | Name | Type  | Owner
--------+------+-------+-------
 public | emp  | table | renee
(1 row)

test=> GRANT USAGE ON SCHEMA public to father;
WARNING:  no privileges were granted for "public"
GRANT
test=> GRANT SELECT on public.emp to father;
GRANT
test=>
6.3 創建成員角色
test=> \c postgres postgres
You are now connected to database "postgres" as user "postgres".
postgres=# CREATE ROLE son1 login nosuperuser nocreatedb nocreaterole inherit encrypted password 'abc123';
CREATE ROLE
postgres=#
這里創建了son1 角色,并開啟inherit 屬性。PostgreSQL 里的角色賦權是通過角色繼承(INHERIT)的方式實現的。
6.4 將father 角色賦給son1
postgres=# GRANT father to son1;
GRANT ROLE
postgres=#
還有另一種方法,就是在創建用戶的時候賦予角色權限。
postgres=# CREATE ROLE son2 login nosuperuser nocreatedb nocreaterole inherit encrypted password 'abc123' in role father;
CREATE ROLE
postgres=#
6.5 測試son1 角色
postgres=# \c test son1
You are now connected to database "test" as user "son1".
test=> \dt
       List of relations
 Schema | Name | Type  | Owner
--------+------+-------+-------
 public | emp  | table | renee
(1 row)

test=> SELECT * from emp;
 id | name 
----+-------
  1 | david
  2 | sandy
(2 rows)

test=>
用renee 角色新創建一張表,再次測試
test=> \c test renee
You are now connected to database "test" as user "renee".
test=> CREATE TABLE dept (
test(> deptid integer,
test(> deptname text);
CREATE TABLE
test=> INSERT INTO dept (deptid, deptname) values(1, 'ts');
INSERT 0 1
test=> \c test son1
You are now connected to database "test" as user "son1".
test=> SELECT * from dept ;
ERROR:  permission denied for relation dept
test=>
son1 角色只能查詢emp 表的數據,而不能查詢dept 表的數據,測試成功。
6.6 查詢角色組信息
test=> \c postgres postgres
You are now connected to database "postgres" as user "postgres".
postgres=#
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 bella     | Create DB                                      | {}
 david     |                                                | {}
 father    | No inheritance                                 | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 renee     | Create role, Create DB                         | {}
 sandy     |                                                | {}
 son1      |                                                | {father}
 son2      |                                                | {father}

postgres=#
“ Member of ” 項表示son1 和son2 角色屬于father 角色組。


 

您可能感興趣的文章:
  • 在postgresql數據庫中創建只讀用戶的操作
  • 查看postgresql數據庫用戶系統權限、對象權限的方法
  • PostgreSQL 實現快速刪除一個用戶

標簽:舟山 呼倫貝爾 黃石 楚雄 池州 菏澤 安順 白山

巨人網絡通訊聲明:本文標題《PostgreSQL 角色與用戶管理介紹》,本文關鍵詞  PostgreSQL,角色,與,用戶,管理,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL 角色與用戶管理介紹》相關的同類信息!
  • 本頁收集關于PostgreSQL 角色與用戶管理介紹的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    俄罗斯毛片基地| 久久青草国产手机看片福利盒子 | 精品国产视频一区二区三区| 26uuu国产在线精品一区二区| 日韩 欧美一区二区三区| 亚洲色图欧美另类| 欧美日韩国产精品成人| 一个色妞综合视频在线观看| 91污在线观看| 欧美亚洲禁片免费| 亚洲午夜在线观看视频在线| 在线播放国产视频| 欧美日韩dvd在线观看| 亚洲在线视频一区| 日本性生活一级片| 欧美一区二区三区影视| 日产欧产美韩系列久久99| 人妻熟女aⅴ一区二区三区汇编| 91精品久久久久久久99蜜桃| 日本系列欧美系列| 亚洲av网址在线| 精品国产精品网麻豆系列| 久久91精品国产91久久小草| 日本污视频网站| 国产精品少妇自拍| 97久久精品人人做人人爽50路| 在线精品视频一区二区三四 | 少妇伦子伦精品无吗| aaa欧美大片| 在线视频欧美区| 亚洲成人资源在线| 无码人妻精品一区二区三应用大全| 精品国产凹凸成av人导航| 国产呦精品一区二区三区网站| 亚洲视频重口味| 1024国产精品| 亚洲成a人无码| 精品国精品国产| 国产69精品久久777的优势| 日本福利一区二区| 日韩av网站免费在线| 女人十八毛片嫩草av| 最新不卡av在线| 88av在线播放| 久久免费美女视频| 不卡一区在线观看| 宅男噜噜噜66一区二区66| 激情欧美一区二区三区在线观看| 紧身裙女教师波多野结衣| 亚洲一区二区在线播放相泽| 成人乱码一区二区三区av| 国产精品免费av| 亚洲精品激情视频| 国产亚洲欧美在线| 久久无码人妻一区二区三区| 日韩欧美国产wwwww| 国产成人精品一区二区三区网站观看| 在线观看国产一区二区| 美女尤物国产一区| 色婷婷精品大在线视频| 日韩不卡一二三区| 久久精品男人天堂av| 久久激情五月婷婷| 在线观看日韩国产| 美女被吸乳得到大胸91| 色综合天天综合网国产成人综合天 | 国产精品99久久久久久久vr| 欧美综合色免费| 九一久久久久久| 在线观看免费亚洲| 国产一区三区三区| 欧美裸体一区二区三区| 国产成人亚洲综合色影视| 7777精品伊人久久久大香线蕉完整版 | 欧美日产在线观看| 国产成人午夜片在线观看高清观看| 欧美另类一区二区三区| 福利电影一区二区三区| 日韩一区和二区| 9人人澡人人爽人人精品| 精品久久国产老人久久综合| 91麻豆视频网站| 国产欧美一区在线| 少妇户外露出[11p]| 亚洲欧美国产高清| jizzjizz日本少妇| 蜜桃免费网站一区二区三区| 欧美亚一区二区| 国产suv精品一区二区883| 日韩欧美在线不卡| 伊人影院在线观看视频| 国产精品三级电影| 日本二区在线观看| 三级欧美韩日大片在线看| 91精品福利在线| 高清日韩电视剧大全免费| 欧美精品一区二区三区高清aⅴ | 国产一区在线观看免费| 日韩和欧美一区二区| 欧美午夜宅男影院| 成人一区二区三区在线观看| 久久综合久久综合久久| 国产麻豆天美果冻无码视频| 亚洲国产视频网站| 在线免费一区三区| www.爱久久.com| 国产精品美女久久久久久| 人人妻人人澡人人爽| 男女性色大片免费观看一区二区| 欧美精品777| 日本一区二区免费视频| 樱花影视一区二区| 一本一道久久a久久精品综合蜜臀| 国产成人自拍网| 国产拍揄自揄精品视频麻豆| 蜜桃av乱码一区二区三区| 久久电影网站中文字幕| 日韩欧美黄色影院| 中国黄色a级片| 视频一区二区三区中文字幕| 3atv在线一区二区三区| 国产精品久久久久久亚洲av| 亚洲一级不卡视频| 欧美卡1卡2卡| 中文字幕在线永久| 丝袜美腿成人在线| 日韩一区二区三区视频在线观看| 国产精品久久久久久亚洲av| 日韩中文字幕一区二区三区| 欧美一区二区三区男人的天堂| 男男做爰猛烈叫床爽爽小说| 日韩有码一区二区三区| 日韩美女在线视频| 亚洲一区视频在线播放| 激情深爱一区二区| 中文字幕av一区二区三区| 三级在线观看免费大全| 成人av资源站| 一区二区三区在线视频观看| 欧美日韩国产电影| 一区二区三区免费在线观看视频| 麻豆极品一区二区三区| 久久久久久久免费视频了| 欧美88888| 99久久久免费精品国产一区二区| 亚洲精品视频在线观看网站| 欧美日韩视频一区二区| 一级国产黄色片| 黑人精品欧美一区二区蜜桃| 亚洲国产岛国毛片在线| 岛国毛片在线观看| 午夜性福利视频| 日韩**一区毛片| 久久精品网站免费观看| 色综合网站在线| 一区二区三区四区不卡在线| 精品视频资源站| 亚洲AV无码国产成人久久| 国产精品乡下勾搭老头1| 亚洲美女视频在线| 欧美一区二区三区在线看| 日韩女同一区二区三区| 成人激情黄色小说| 亚洲制服丝袜av| 亚洲精品一区二区在线观看| 一区二区视频免费看| 天天躁日日躁狠狠躁av麻豆男男| 久久国产精品免费| 18成人在线观看| 日韩你懂的在线播放| 国产精品丝袜一区二区| 久久无码专区国产精品s| 精品一区二区三区日韩| 亚洲乱码国产乱码精品精小说| 91精品国产一区二区三区| 天堂网av2018| 农村末发育av片一区二区| 国产一区二区三区在线观看免费| 亚洲精品免费在线观看| 精品美女一区二区| 色婷婷亚洲一区二区三区| 中文字幕一区二区人妻在线不卡 | 国产麻豆欧美日韩一区| 一区二区三区色| 久久久久久久久久久久电影| 欧美亚洲自拍偷拍| 国产激情av在线| 日韩女优在线视频| 国产成人精品综合在线观看| 午夜激情综合网| 国产精品理论在线观看| 日韩三级av在线播放| 私库av在线播放| 丰腴饱满的极品熟妇| 91麻豆自制传媒国产之光| 国产资源在线一区| 午夜精品久久久久影视| 1000精品久久久久久久久| 精品国产免费一区二区三区香蕉| 欧美性感一区二区三区|