簡體   English   中英

用戶身份驗證在Postgresql中如何工作

[英]How does user authentication work in Postgresql

用戶/角色在Postgresql中如何精確地用於訪問控制,它們與在OS中提供訪問控制的用戶有何不同。

安裝Postgresql時,我可以看到已創建用戶postgres,如在/ etc / passwd中所示。

我可以通過sudo使用psql並在Postgres中查看用戶/角色。

$ sudo -u postgres psql
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}

這表明存在一個名為postgres的角色,但嘗試使用它而不是使用sudo失敗。

$ psql -U postgres
psql: FATAL:  Peer authentication failed for user "postgres"

為什么,/ etc / passwd中的postgres用戶與\\ du打印的postgres角色之間的聯系是什么?

“ postgres” OS用戶和“ postgres”角色之間的連接為:

  1. 它們的拼寫相同
  2. 如果未為psql指定-U選項,則默認使用操作系統用戶名作為角色名,如果該用戶名是OS用戶,則可能為“ postgres”。
  3. 如果您在pg_hba.conf中指定了“對等”授權(您似乎已完成),那么您必須是該os用戶才能以該角色登錄。 如果您不希望使用該規則,請將其更改為其他內容,例如trust,md5等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM