簡體   English   中英

PostgreSQL 創建用戶登錄

[英]PostgreSQL create user with login

我有一個應用程序可以訪問單個 PostgreSQL 服務器上的多個數據庫。 我非常喜歡 Microsoft SQL 服務器概念,您可以在服務器級別創建一個CREATE LOGIN app_user WITH PASSWORD 'xxx' 然后,在數據庫級別創建CREATE USER app_user WITH LOGIN app_user

您可以在服務器級別管理密碼保留、禁用/啟用用戶等安全問題(如果數據庫數量超過 20,這是一個方便的功能)

這在 PostgreSQL 上也可行嗎?

非常感謝!

Postgres 的工作方式不同,但您可以實現相同的效果。

“用戶”和“登錄”之間沒有區別。

Postgres 只有角色——具有“登錄”權限的角色通常被稱為“用戶”(參見create user手冊)

對數據庫的訪問是根據允許用戶(=具有login權限的角色)連接到特定數據庫的connect權限授予的。

默認情況下,新創建的用戶可以連接到實例中的任何數據庫(又名 “集群” ),因為角色 public 具有默認授予的權限connect 此特權是按數據庫授予的。

如果您想允許每個創建的用戶連接到每個數據庫,則無需執行任何操作 - 這是默認設置。 只需創建用戶(請注意,這些用戶將無法對數據庫執行任何有意義的操作,只要他們沒有獲得額外權限來訪問或在這些數據庫中創建對象)。

如果您想要更細粒度的控制,請刪除每個數據庫的public角色的連接權限。

然后將connect權限授予您希望允許連接到特定數據庫的角色(用戶)。


有基於基於主機的身份驗證的第二級訪問控制,並通過編輯pg_bha.conf進行控制。 我更喜歡通過pg_hba.conf為普通用戶(當然在內部網絡上)開放所有訪問權限,並通過 SQL 和顯式 GRANT 控制具體訪問權限 - 這更容易管理,因為您不需要編輯服務器端文件. 但這在很大程度上是個人喜好的問題。 如果您需要其他級別的訪問控制,例如基於客戶端 IP 協議或身份驗證方法,那么pg_hba.conf是唯一的方法。

暫無
暫無

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

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