

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

# 連線至執行 PostgreSQL 資料庫引擎的資料庫執行個體
<a name="USER_ConnectToPostgreSQLInstance"></a>

在 Amazon RDS 佈建資料庫執行個體之後，您就可以使用任何標準 SQL 用戶端應用程式來連線至執行個體。連線到資料庫執行個體之前，資料庫執行個體必須可用且可存取。您是否可以從 VPC 外部連線到執行個體，取決於您建立 Amazon RDS 資料庫執行個體的方式：
+ 如果您將資料庫執行個體建立為*公有*，VPC 外部的裝置和 Amazon EC2 執行個體都可以連線到您的資料庫。
+ 如果您將資料庫執行個體建立為*私有*，只有 Amazon EC2 執行個體和 Amazon VPC 內的裝置可以連線到您的資料庫。

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

若要進一步了解不同的 Amazon RDS 和 Amazon VPC 組態，以及這些組態如何影響可存取性，請參閱 [在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md)。

**Contents**
+ [

## 安裝 psql 用戶端
](#install-psql)
+ [

## 尋找 RDS for PostgreSQL 資料庫執行個體的連線資訊
](#postgresql-endpoint)
+ [

# 使用 pgAdmin 連線至 RDS for PostgreSQL 資料庫執行個體
](USER_ConnectToPostgreSQLInstance.pgAdmin.md)
+ [

# 使用 psql 連線至 RDS for PostgreSQL 資料庫執行個體
](USER_ConnectToPostgreSQLInstance.psql.md)
+ [

# 使用 Amazon Web Services (AWS) JDBC 驅動程式連線至 RDS for PostgreSQL
](PostgreSQL.Connecting.JDBCDriver.md)
+ [

# 使用 Amazon Web Services (AWS) Python 驅動程式連線至 RDS for PostgreSQL
](PostgreSQL.Connecting.PythonDriver.md)
+ [

# 針對您的 RDS for PostgreSQL 執行個體連線進行疑難排解
](USER_ConnectToPostgreSQLInstance.Troubleshooting.md)
  + [

## 錯誤 – 嚴重：資料庫*名稱*不存在
](USER_ConnectToPostgreSQLInstance.Troubleshooting.md#USER_ConnectToPostgreSQLInstance.Troubleshooting-DBname)
  + [

## 錯誤 – 無法連線至伺服器：連線逾時
](USER_ConnectToPostgreSQLInstance.Troubleshooting.md#USER_ConnectToPostgreSQLInstance.Troubleshooting-timeout)
  + [

## 安全性群組存取規則發生錯誤
](USER_ConnectToPostgreSQLInstance.Troubleshooting.md#USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules)

## 安裝 psql 用戶端
<a name="install-psql"></a>

若要從 EC2 執行個體連線到資料庫執行個體，您可以在 EC2 執行個體上安裝 PostgreSQL 用戶端。若要在 Amazon Linux 2023 上安裝最新版本的 psql 用戶端，請執行下列命令：

```
sudo dnf install postgresql<version number>
```

若要在 Amazon Linux 2 上安裝最新版本的 psql 用戶端，請執行下列命令：

```
sudo yum install -y postgresql
```

若要在 Ubuntu 上安裝最新版本的 psql 用戶端，請執行下列命令：

```
sudo apt install -y postgresql-client
```

## 尋找 RDS for PostgreSQL 資料庫執行個體的連線資訊
<a name="postgresql-endpoint"></a>

如果資料庫執行個體可用且可存取，您可以透過提供下列資訊給 SQL 用戶端應用程式來連線：
+ 資料庫執行個體端點，做為執行個體的主機名稱 (DNS 名稱)。
+ 資料庫執行個體接聽所在的連接埠。PostgreSQL 的預設連接埠為 5432。
+ 資料庫執行個體的使用者名稱和密碼。PostgreSQL 的預設「主要使用者名稱」是 `postgres`。
+ 資料庫的名稱和密碼 (資料庫名稱)。

 您可以使用 AWS 管理主控台、 AWS CLI [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令或 Amazon RDS API [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) 操作來取得這些詳細資訊。

**使用 尋找端點、連接埠號碼和資料庫名稱 AWS 管理主控台**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

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

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

1. 在 **Connectivity & security (連線能力和安全性)** 索引標籤上，複製該端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[從 RDS 主控台取得端點\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/PostgreSQL-endpoint.png)

1. 在 **Configuration (組態)** 索引標籤上，記下資料庫名稱。如果您在建立 RDS for PostgreSQL 執行個體時建立資料庫，您會看到名稱列在資料庫名稱底下。如果您沒有建立資料庫，資料庫名稱會顯示破折號 (‐)。  
![\[從 RDS 主控台取得資料庫名稱\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/PostgreSQL-db-name.png)

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

# 使用 pgAdmin 連線至 RDS for PostgreSQL 資料庫執行個體
<a name="USER_ConnectToPostgreSQLInstance.pgAdmin"></a>

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

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

1. 在您的用戶端電腦上啟動 pgAdmin 應用程式。

1. 在 **Dashboard (儀表板)** 標籤上，選擇 **Add New Server (新增伺服器)**。

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

1. 在 **Connection (連線)** 標籤上，輸入來自資料庫執行個體的下列資訊：
   + 針對 **Host (主機)**，輸入端點，例如 `mypostgresql.c6c8dntfzzhgv0.us-east-2.rds.amazonaws.com`。
   + 針對 **Port (連接埠)**，輸入指派的連接埠。
   + 針對 **Username (使用者名稱)**，輸入您在建立資料庫執行個體時輸入的使用者名稱 (如果從預設值 `postgres` 變更「主要使用者名稱」)。
   + 針對 **Password (密碼)**，輸入建立資料庫執行個體時所輸入的密碼。  
![\[輸入您在建立資料庫執行個體時輸入的密碼\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Postgres-Connect01.png)

1. 選擇**儲存**。

   如果有連線問題，請參閱 [針對您的 RDS for PostgreSQL 執行個體連線進行疑難排解](USER_ConnectToPostgreSQLInstance.Troubleshooting.md)。

1. 若要在 pgAdmin 瀏覽器中存取資料庫，請展開 **Servers** (伺服器)、資料庫執行個體，和 **Databases** (資料庫)。選擇資料庫執行個體的資料庫名稱。  
![\[在 pgAdmin 瀏覽器中選擇資料庫執行個體的資料庫名稱\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Postgres-Connect02.png)

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

# 使用 psql 連線至 RDS for PostgreSQL 資料庫執行個體
<a name="USER_ConnectToPostgreSQLInstance.psql"></a>

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

您可以從 [PostgreSQL](https://www.postgresql.org/download/) 網站下載 PostgreSQL 用戶端。請遵循適用於您作業系統版本的指示，以安裝 psql。

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

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

**注意**  
當伺服器需要密碼驗證，且無法從其他來源取得密碼時，使用 `--no-password` 的連線嘗試會失敗。如需詳細資訊，請參閱 [psql 文件](https://www.postgresql.org/docs/13/app-psql.html)。

如果這是您第一次連線至此資料庫執行個體，或者尚未針對此 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 for PostgreSQL
<a name="PostgreSQL.Connecting.JDBCDriver"></a>

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 儲存庫](https://github.com/awslabs/aws-advanced-jdbc-wrapper)。

# 使用 Amazon Web Services (AWS) Python 驅動程式連線至 RDS for PostgreSQL
<a name="PostgreSQL.Connecting.PythonDriver"></a>

Amazon Web Services (AWS) Python 驅動程式設計為進階 Python 包裝函式。此包裝函式是開放原始碼 Psycopg 驅動程式的補充和延伸功能。 AWS Python 驅動程式支援 Python 3.8 版和更高版本。您可以使用 `pip` 命令以及`psycopg`開放原始碼`aws-advanced-python-wrapper`套件來安裝套件。

如需 AWS Python 驅動程式的詳細資訊和完整的使用說明，請參閱 [Amazon Web Services (AWS) Python Driver GitHub 儲存庫](https://github.com/awslabs/aws-advanced-python-wrapper)。

# 針對您的 RDS for PostgreSQL 執行個體連線進行疑難排解
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting"></a>

**Topics**
+ [

## 錯誤 – 嚴重：資料庫*名稱*不存在
](#USER_ConnectToPostgreSQLInstance.Troubleshooting-DBname)
+ [

## 錯誤 – 無法連線至伺服器：連線逾時
](#USER_ConnectToPostgreSQLInstance.Troubleshooting-timeout)
+ [

## 安全性群組存取規則發生錯誤
](#USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules)

## 錯誤 – 嚴重：資料庫*名稱*不存在
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting-DBname"></a>

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

## 錯誤 – 無法連線至伺服器：連線逾時
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting-timeout"></a>

如果您無法連線至資料庫執行個體，常見的錯誤是 `Could not connect to server: Connection timed out.`，如果遇到此錯誤，請檢查以下事項：
+ 檢查使用的主機名稱是否是資料庫執行個體端點，且使用的連接埠號碼是否正確。
+ 確定該資料庫執行個體的公開存取性是設為 **Yes (是)** 以允許外部連線。若要修改 **Public access (公開存取)** 設定，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 確定連線到資料庫的使用者對它具有 CONNECT 存取權。您可以使用下列查詢來提供資料庫的連線存取權。

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

  若要修復此情況，請將資料庫執行個體修改為使用不同的連接埠。同時，確定套用至資料庫執行個體的安全群組，可允許對該新連接埠的連線。若要修改 **Database port (資料庫連接埠)** 設定，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 檢查您嘗試使用的連接埠是否已由 PostgreSQL 的本機執行個體或在您電腦上執行的其他服務佔用。例如，如果您在相同的連接埠 (預設為 5432) 上執行本機 PostgreSQL 資料庫，則可能無法成功連線至 RDS for PostgreSQL 資料庫執行個體。請確定該連接埠是可用的，或在情況允許時嘗試使用不同的連接埠號碼連線。
+ 另請參閱 [安全性群組存取規則發生錯誤](#USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules)。

## 安全性群組存取規則發生錯誤
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules"></a>

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

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

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

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

如需 Amazon RDS 安全群組的詳細資訊，請參閱 [使用安全群組控制存取](Overview.RDSSecurityGroups.md)。