跳轉至內容

PostgreSQL/客戶端伺服器通訊客戶端

來自華夏公益教科書

在像 createdb、psql、pg_dump、vacuumdb 等客戶端程式能夠對資料庫執行任何操作之前,它必須與該資料庫建立連線。為此,它必須為基本邊界條件提供具體的值。

  • 伺服器的 IP 地址或 DNS 名稱,即例項執行的位置。
  • 該伺服器上的埠,例項正在監聽的埠。(IP 地址和埠的組合標識了例項。只要埠不同,同一個 IP 地址上就可以有多個例項。)
  • 例項(或叢集內)中的資料庫名稱。
  • 客戶端程式想要使用的使用者(= 角色)的名稱。
  • 該使用者的密碼。

您可以透過三種不同的方式指定這些值

  • 作為客戶端程式的顯式引數。
  • 作為環境變數。
  • 作為特殊檔案 pgpass 中的一行固定文字。

您可以在 createdb、psql、pg_dump、vacuumdb 和其他標準 PostgreSQL 命令列工具的常用簡短 (-) 或長 (--) 格式中指定引數。

$ # Example
$ psql -h www.dbserver.com --port=5432   ....

引數名稱及其含義為

簡短形式 長形式 含義
-h --host IP 或 DNS
-p --port 埠號(預設:5432)
-d --dbname 叢集中的資料庫
-U --username 使用者名稱

如有必要,客戶端程式將提示輸入密碼。

環境變數

[編輯 | 編輯原始碼]

作為引數傳遞的替代方法,您可以在 shell 中定義環境變數。

環境變數 含義
PGHOST IP 或 DNS
PGPORT 埠號(預設:5432
PGDATABASE 叢集中的資料庫
PGUSER 使用者名稱
PGPASSWORD 該使用者的密碼(不推薦)
PGPASSFILE 儲存這些值的純文字檔名稱,請參見下文(預設:.pgpass)

檔案 'pgpass'

[編輯 | 編輯原始碼]

您可以將這些值儲存在一個檔案中,而不是使用上面所示的引數或環境變數。在以下格式中,每個定義使用一行

 hostname:port:database:username:password

UNIX 系統上的預設檔名是 ~/.pgpass,Windows 上則是 C:\Users\MyUser\AppData\Roaming\postgresql\pgpass.conf。在 UNIX 系統上,檔案保護必須禁止任何世界或組訪問:chmod 0600 ~/.pgpass

您可以使用任何文字編輯器建立該檔案。如果您使用 pgAdmin,則無需建立該檔案。pgAdmin 會在連線成功後自動建立該檔案,並存儲實際的連線值。


華夏公益教科書