連線至執行 PostgreSQL 資料庫引擎的資料庫執行個體 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

連線至執行 PostgreSQL 資料庫引擎的資料庫執行個體

在 Amazon RDS 佈建資料庫執行個體之後,您就可以使用任何標準 SQL 用戶端應用程式來連線至執行個體。連線到資料庫執行個體之前,資料庫執行個體必須可用且可存取。您是否可以從 VPC 外部連線到執行個體,取決於您建立 Amazon RDS 資料庫執行個體的方式:

  • 如果您將資料庫執行個體建立為公有,VPC 外部的裝置和 Amazon EC2 執行個體都可以連線到您的資料庫。

  • 如果您將資料庫執行個體建立為私有,只有 Amazon EC2 執行個體和 Amazon VPC 內的裝置可以連線到您的資料庫。

若要檢查您的資料庫執行個體是公用還是私有,請使 AWS Management Console 用檢視執行個體的 [連線與安全性] 索引標籤。在 Security (安全性) 底下會顯示 "Publicly accessible" (可公開存取)值,其中為 No (否) 表示私有,Yes (是) 表示公有。

若要進一步了解不同的 Amazon RDS 和 Amazon VPC 組態,以及這些組態如何影響可存取性,請參閱 在 VPC 中存取資料庫執行個體的案例

安裝 psql 客戶端

若要從 EC2 執行個體連線到資料庫執行個體,您可以在 EC2 執行個體上安裝 PostgreSQL 用戶端。若要在 Amazon Linux 2023 上安裝 psql 用戶端,請執行下列命令:

sudo dnf install postgresql15

若要在 Amazon Linux 2 上安裝 psql 用戶端,請執行下列命令:

sudo amazon-linux-extras install postgresql14

若要在 Ubuntu 上安裝 psql 用戶端,請執行下列命令:

sudo apt-get install -y postgresql14

尋找 RDS 資料庫執行個體的 PostgreSQL 資訊

如果資料庫執行個體可用且可存取,您可以透過提供下列資訊給 SQL 用戶端應用程式來連線:

  • 資料庫執行個體端點,做為執行個體的主機名稱 (DNS 名稱)。

  • 資料庫執行個體接聽所在的連接埠。PostgreSQL 的預設連接埠為 5432。

  • 資料庫執行個體的使用者名稱和密碼。PostgreSQL 的預設「主要使用者名稱」是 postgres

  • 資料庫的名稱和密碼 (資料庫名稱)。

您可以使用 AWS Management Console、 AWS CLI describe-db-instances命令或 Amazon RDS API Descri be DBInstances 操作來取得這些詳細資訊。

若要尋找端點、連接埠號碼和資料庫名稱,請使用 AWS Management Console
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 開啟 RDS 主控台,然後選擇 Databases (資料庫),以顯示資料庫執行個體清單。

  3. 選擇 PostgreSQL 資料庫執行個體名稱以顯示其詳細資訊。

  4. Connectivity & security (連線能力和安全性) 索引標籤上,複製該端點。另外,請記下連接埠號碼。您需要同時有端點和連接埠號碼,才能連線至資料庫執行個體。

    從 RDS 主控台取得端點
  5. Configuration (組態) 索引標籤上,記下資料庫名稱。如果您在建立 RDS for PostgreSQL 執行個體時建立資料庫,您會看到名稱列在資料庫名稱底下。如果您沒有建立資料庫,資料庫名稱會顯示破折號 (‐)。

    從 RDS 主控台取得資料庫名稱

以下是連線至 PostgreSQL 資料庫執行個體的兩個方式。第一個範例使用 pgAdmin,這是常見的 PostgreSQL 開放式原始碼管理和開發工具。第二個範例使用 psql,這是屬於 PostgreSQL 安裝一部分的命令列公用程式。

使用 pgAdmin 連線至 RDS for PostgreSQL 資料庫執行個體

您可以使用開放原始碼工具 pgAdmin 來連線至 RDS for PostgreSQL 資料庫執行個體。您可以從 http://www.pgadmin.org/ 下載及安裝 pgAdmin,不需要在您的用戶端電腦上有 PostgreSQL 的本機執行個體。

若要使用 pgAdmin 連線至 RDS for PostgreSQL 資料庫執行個體
  1. 在您的用戶端電腦上啟動 pgAdmin 應用程式。

  2. Dashboard (儀表板) 標籤上,選擇 Add New Server (新增伺服器)

  3. Create - Server (建立 - 伺服器) 對話方塊中,於 General (一般) 標籤上輸入名稱,以識別 pgAdmin 中的伺服器。

  4. Connection (連線) 標籤上,輸入來自資料庫執行個體的下列資訊:

    • 針對 Host (主機),輸入端點,例如 mypostgresql.c6c8dntfzzhgv0.us-east-2.rds.amazonaws.com

    • 針對 Port (連接埠),輸入指派的連接埠。

    • 針對 Username (使用者名稱),輸入您在建立資料庫執行個體時輸入的使用者名稱 (如果從預設值 postgres 變更「主要使用者名稱」)。

    • 針對 Password (密碼),輸入建立資料庫執行個體時所輸入的密碼。

  5. 選擇 Save (儲存)。

    如果有連線問題,請參閱 針對您的 RDS for PostgreSQL 執行個體連線進行疑難排解

  6. 若要在 pgAdmin 瀏覽器中存取資料庫,請展開 Servers (伺服器)、資料庫執行個體,和 Databases (資料庫)。選擇資料庫執行個體的資料庫名稱。

  7. 若要開啟您可以在其中輸入 SQL 命令的面板,請選擇 Tools (工具) 然後選擇 Query Tool (查詢工具)

使用 psql 連線至 RDS for PostgreSQL 資料庫執行個體

您可以使用 psql 命令列公用程式的本機執行個體來連線至 RDS for PostgreSQL 資料庫執行個體。您需要在用戶端電腦上安裝 PostgreSQL 或 psql 用戶端。

您可以從 PostgreSQL 網站下載 PostgreSQL 用戶端。請遵循適用於您作業系統版本的指示,以安裝 psql。

若要使用 psql 連線至 RDS for PostgreSQL 資料庫執行個體,您必須提供主機 (DNS) 資訊、存取憑證和資料庫的名稱。

請使用下列其中一個格式來連線至 RDS for PostgreSQL 資料庫執行個體。連線時,系統會提示您輸入密碼。如需批次工作或指令碼,請使用 --no-password 選項。此選項是為整個工作階段設定。

注意

當伺服器需要密碼驗證,且無法從其他來源取得密碼時,使用 --no-password 的連線嘗試會失敗。如需詳細資訊,請參閱 psql 文件

如果這是您第一次連線至此資料庫執行個體,或者尚未針對此 RDS for PostgreSQL 執行個體建立資料庫,則可以使用「主要使用者名稱」和密碼連線至 postgres 資料庫。

針對 Unix,使用下列格式。

psql \ --host=<DB instance endpoint> \ --port=<port> \ --username=<master username> \ --password \ --dbname=<database name>

針對 Windows,使用下列格式。

psql ^ --host=<DB instance endpoint> ^ --port=<port> ^ --username=<master username> ^ --password ^ --dbname=<database name>

例如,下列命令會在名為 mypgdb 的 PostgreSQL 資料庫執行個體上使用虛擬登入資料連線至名為 mypostgresql 的資料庫。

psql --host=mypostgresql.c6c8mwvfdgv0.us-west-2.rds.amazonaws.com --port=5432 --username=awsuser --password --dbname=mypgdb

使用 Amazon Web Services (AWS) JDBC 驅動程式連線至 RDS 版

Amazon Web Services(AWS)JDBC 驅動程序被設計為一個高級 JDBC 包裝。這個包裝是補充和擴展現有 JDBC 驅動程序的功能。該驅動程序與社區 pgJDBC 驅動程序兼容。

若要安裝 AWS JDBC 驅動程式,請附加 AWS JDBC 驅動程式 .jar 檔案 (位於應用程式中CLASSPATH),並保留對個別社群驅動程式的參考。更新相應的連接 URL 前綴,如下所示:

  • jdbc:postgresql:// 設定為 jdbc:aws-wrapper:postgresql://

如需有關 AWS JDBC 驅動程式的詳細資訊以及使用它的完整說明,請參閱 Amazon Web Services (AWS) JDBC 驅動程式 GitHub 儲存庫。

使用 Amazon Web Services (AWS) Python 驅動程式連接到 RDS 版

Amazon Web Services(AWS)Python 驅動程序被設計為一個先進的 Python 包裝。此包裝器與開源 Psycopg 驅動程序的功能互補並擴展。 AWS Python 驅動程式支援 3.8 及更高版本。您可以使用pip命令以及psycopg開放原始碼套件來安裝套件。aws-advanced-python-wrapper

有關 AWS Python 驅動程序的更多信息以及使用它的完整說明,請參閱 Amazon Web Services(AWS)Python 驅動程序 GitHub 存儲庫

針對您的 RDS for PostgreSQL 執行個體連線進行疑難排解

錯誤 – 嚴重:資料庫名稱不存在

如果您在連線時收到類似 FATAL: database name does not exist 的鐠誤,請在 --dbname 選項中嘗試使用預設資料庫名稱 postgres

錯誤 – 無法連線至伺服器:連線逾時

如果您無法連線至資料庫執行個體,常見的錯誤是 Could not connect to server: Connection timed out.,如果遇到此錯誤,請檢查以下事項:

  • 檢查使用的主機名稱是否是資料庫執行個體端點,且使用的連接埠號碼是否正確。

  • 確定該資料庫執行個體的公開存取性是設為 Yes (是) 以允許外部連線。若要修改 Public access (公開存取) 設定,請參閱 修改 Amazon RDS 資料庫執行個體

  • 確定連線到資料庫的使用者對它具有 CONNECT 存取權。您可以使用下列查詢來提供資料庫的連線存取權。

    GRANT CONNECT ON DATABASE database name TO username;
  • 檢查指派給資料庫執行個體的安全群組是否具有以下規則:允許透過您的連線可能行經之防火牆的存取。例如,資料庫執行個體是使用預設連接埠 5432 來建立,而公司的防火牆規則會封鎖從外部公司裝置到該連接埠的連線。

    若要修復此情況,請將資料庫執行個體修改為使用不同的連接埠。同時,確定套用至資料庫執行個體的安全群組,可允許對該新連接埠的連線。若要修改 Database port (資料庫連接埠) 設定,請參閱 修改 Amazon RDS 資料庫執行個體

  • 另請參閱 安全性群組存取規則發生錯誤

安全性群組存取規則發生錯誤

顯然地,最常見的連線問題在於對資料庫執行個體指派之安全群組的存取規則。如果建立資料庫執行個體時使用的是預設的安全群組,安全群組很可能沒有可允許您存取該執行個體的存取規則。

為了讓連線運作,您在建立時指派給資料庫執行個體的安全群組,必須允許對該資料庫執行個體的存取。例如,如果資料庫執行個體是在 VPC 中建立,則它必須具有可授權連線的 VPC 安全群組。檢查建立資料庫執行個體所用的安全群組,是否未授權從執行應用程式所在的裝置或 Amazon EC2 執行個體的連線。

您可以新增或編輯安全群組中的傳入規則。針對 Source (來源),選擇 My IP (我的 IP) 允許透過您的瀏覽器中偵測到的 IP 位址存取資料庫執行個體。如需更多詳細資訊,請參閱 建立安全群組以存取在您的 VPC 中您的資料庫執行個體

或者,如果資料庫執行個體是在 VPC 之外建立,則它必須具有可授權那些連線的安全群組。

如需 Amazon RDS 安全群組的詳細資訊,請參閱 使用安全群組控制存取