介紹如何將 PostgreSQL 資料庫的帳號與密碼儲存在 .pgpass
設定檔中,讓登入資料庫時不需要打密碼。
在 Linux 系統中可以將 PostgreSQL 資料庫的帳號與密碼儲存於 $HOME/.pgpass
這個設定檔中,這樣在登入 PostgreSQL 資料庫時就可以不需要輸入密碼。
在 .pgpass
設定檔中可以設定多組帳號與密碼,其格式如下:
hostname:port:database:username:password
設定檔的每一行都有五個欄位,可以是普通字串或是萬用字元(*
),登入 PostgreSQL 資料庫時會逐一檢查每一行的設定,使用最先符合那一行的密碼。
以下是一個簡單的範例:
# 資料庫帳號密碼設定 localhost:5432:myuser:mydb:mypassword # 自訂預設密碼 localhost:5432:*:*:mypassword2
由於 .pgpass
設定檔中有儲存敏感的帳號與密碼,所以使用前必須將其檔案權限設定為 600
,讓除了自己以外的人都不能讀取:
# 設定檔案權限 chmod 600 .pgpass
設定好 .pgpass
之後,就可以直接使用 psql
登入資料庫,只要登入的條件匹配成功,就可以直接使用 .pgpass
中所記錄的密碼登入資料庫:
# 連線至資料庫 psql -h localhost -U myuser mydb
PostgreSQL 的帳號與密碼設定檔除了使用預設的 $HOME/.pgpass
之外,亦可使用 PGPASSFILE
這個環境變數自訂設定檔:
# 自訂 PostgreSQL 帳號與密碼設定檔 export PGPASSFILE=/path/to/mypgpass.txt
postgres
帳號密碼另外補充說明一點,postgres
資料庫管理帳號預設是沒有密碼的,如果需要讓 postgres
帳號亦可透過 .pgpass
的方式登入,可以先以一般的方式用 postgres
帳號登入資料庫之後,使用 \password
設定 postgres
帳號的密碼,再將密碼放在 .pgpass
之中即可。