HOWTO · PostgreSQL

使用密碼連線到 PostgreSQL

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

本頁內容

本文展示了使用密碼連線 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 官方文件。