使用密碼連線到 PostgreSQL

Shihab Sikder 2023年1月30日 2022年5月14日
  1. 使用命令列介面 (CLI) 通過密碼連線到 PostgreSQL
  2. pgpass.conf 檔案中定義密碼以登入 PostgreSQL
  3. 使用帶密碼的連線字串連線到 PostgreSQL
使用密碼連線到 PostgreSQL

本文展示了使用密碼連線 PostgreSQL 的各種方法。它可以通過命令列、pgpass 檔案、PGPASSWORD 環境變數或連線字串。

使用命令列介面 (CLI) 通過密碼連線到 PostgreSQL

如果你的機器上安裝了 PostgreSQL,你可以嘗試不同的方法來連線資料庫。一種簡單的方法是在命令列中輸入 psql,它會詢問你 admin 使用者的密碼。

如果你在命令中只輸入 psql 而沒有提及使用者名稱,系統將詢問你 PostgreSQL 的管理員使用者密碼,如下所示。

C:\Users\Admin>psql
Password for user Admin:

如果你想使用其他帳戶登入,則需要使用標誌 -U,然後提供使用者名稱,如下所示。

C:\Users\Admin>psql -U postgres
Password for user postgres:
psql (14.2)
WARNING: Console code page (437) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

postgres=#

在這裡,CLI 要求輸入使用者 postgres 的密碼。登入需要兩個步驟。

首先,在 psql 命令中定義使用者名稱,然後當 CLI 詢問時,你輸入密碼。但是我們可以使用一行命令直接連線到 PostgreSQL。

為此,我們需要設定環境變數 PGPASSWORD

在 Windows 中:

C:\Users\Admin>set PGPASSWORD=root

在 Linux 中:

export PGPASSWORD=root

如果我們想連線到 psql,它將從 PGPASSWORD 獲取密碼,該密碼現在在環境中可用。

C:\Users\Admin>psql -U postgres
psql (14.2)
WARNING: Console code page (437) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

你看,現在它不需要輸入密碼來連線 psql。從此處瞭解有關 PostgreSQL 環境變數的更多資訊。

pgpass.conf 檔案中定義密碼以登入 PostgreSQL

在 PostgreSQL 的 APPDATA 資料夾中,有一個名為 pgpass.conf 的檔案。你可以在那裡定義你的密碼。

此外,你可以使用連線引數 passfile 定義你的密碼檔案。檔案格式如下。

hostname:port:database:username:password

這個結構在 PostgreSQL 官方頁面這裡上提到過。

它知道使用者有效的資料庫以及該特定使用者的密碼。

使用帶密碼的連線字串連線到 PostgreSQL

當你獲得不在 localhost 中的線上資料庫或遠端資料庫時,你需要通過連線字串進行連線。連線字串包含一段使用者名稱、密碼、資料庫名稱、埠和主機地址。

連線字串的格式如下。

postgresql://<username>:<password>@<host><port>/<database_name>?sslmode=require

如果你使用 localhost,你不需要對遠端資料庫使用 sslmode。在 Python、C++ 或 Java 專案中使用 PostgreSQL 資料庫時,此方法最有用。

因此,使用連線字串連線資料庫(本地)的命令如下。

C:\Users\Admin>psql postgresql://postgres:root@localhost:5432/postgres
psql (14.2)
WARNING: Console code page (437) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

postgres=#

這裡是可用於客戶端身份驗證的方法列表。它來自 PostgreSQL 官方文件。

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website