

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

# 使用 連線至 PostgreSQL 資料庫 AWS Schema Conversion Tool
<a name="CHAP_Source.PostgreSQL"></a>

您可以使用 AWS SCT 將結構描述、資料庫程式碼物件和應用程式程式碼從 PostgreSQL 轉換為下列目標：
+ Amazon RDS for MySQL
+ Amazon Aurora MySQL-Compatible Edition
+ Amazon RDS for PostgreSQL
+ Amazon Aurora PostgreSQL-Compatible Edition

如需詳細資訊，請參閱下列章節：

**Topics**
+ [PostgreSQL 做為來源資料庫的權限](#CHAP_Source.PostgreSQL.Permissions)
+ [連接至 PostgreSQL 做為來源](#CHAP_Source.PostgreSQL.Connecting)
+ [MySQL 做為目標資料庫的權限](#CHAP_Source.PostgreSQL.ConfigureMySQL)

## PostgreSQL 做為來源資料庫的權限
<a name="CHAP_Source.PostgreSQL.Permissions"></a>

PostgreSQL 做為來源所需的權限如下：
+ CONNECT ON DATABASE *<database\$1name>* 
+ USAGE ON SCHEMA *<database\$1name>* 
+ SELECT ON ALL TABLES IN SCHEMA *<database\$1name>* 
+ SELECT ON ALL SEQUENCES IN SCHEMA *<database\$1name>* 

## 連接至 PostgreSQL 做為來源
<a name="CHAP_Source.PostgreSQL.Connecting"></a>

使用以下程序，透過 AWS Schema Conversion Tool連接到您的 PostgreSQL 來源資料庫。

**若要連接到 PostgreSQL 來源資料庫**

1. 在 中 AWS Schema Conversion Tool，選擇**新增來源**。

1. 選擇 **PostgreSQL**，然後選擇**下一步**。

   **新增來源**對話方塊隨即出現。

1. 針對**連線名稱**，輸入資料庫的名稱。 會在左側面板的樹狀目錄中 AWS SCT 顯示此名稱。

1. 使用來自 的資料庫登入資料 AWS Secrets Manager 或手動輸入：
   + 若要從 Secrets Manager 使用資料庫登入資料，請使用下列指示：

     1. 針對 **AWS Secret**，選擇秘密的名稱。

     1. 選擇**填入**，從 Secrets Manager 自動填入資料庫連線對話方塊中的所有值。

     如需從 Secrets Manager 使用資料庫登入資料的資訊，請參閱 [在 AWS Secrets Manager 中設定 AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md)。
   + 若要手動輸入 PostgreSQL 來源資料庫連線資訊，請使用下列指示：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/SchemaConversionTool/latest/userguide/CHAP_Source.PostgreSQL.html)

1. 選擇**測試連線**以驗證 AWS SCT 可以連接到您的來源資料庫。

1. 選擇**連線**以連線至來源資料庫。

## MySQL 做為目標資料庫的權限
<a name="CHAP_Source.PostgreSQL.ConfigureMySQL"></a>

當您從 PostgreSQL MySQL 遷移時，MySQL 做為目標所需的權限如下：
+ CREATE ON \$1.\$1
+ ALTER ON \$1.\$1
+ DROP ON \$1.\$1
+ INDEX ON \$1.\$1
+ 參考開啟 \$1.\$1
+ SELECT ON \$1.\$1
+ 在 \$1.\$1 上建立檢視
+ SHOW VIEW ON \$1.\$1
+ 觸發開啟 \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ INSERT，更新 AWS\$1POSTGRESQL\$1EXT.\$1
+ 在 AWS\$1POSTGRESQL\$1EXT\$1DATA 上插入、更新、刪除。\$1
+ 在 AWS\$1POSTGRESQL\$1EXT\$1DATA 上建立暫存資料表。\$1

您可以使用下列程式碼範例來建立資料庫使用者並授與權限。

```
CREATE USER 'user_name' IDENTIFIED BY 'your_password';
GRANT CREATE ON *.* TO 'user_name';
GRANT ALTER ON *.* TO 'user_name';
GRANT DROP ON *.* TO 'user_name';
GRANT INDEX ON *.* TO 'user_name';
GRANT REFERENCES ON *.* TO 'user_name';
GRANT SELECT ON *.* TO 'user_name';
GRANT CREATE VIEW ON *.* TO 'user_name';
GRANT SHOW VIEW ON *.* TO 'user_name';
GRANT TRIGGER ON *.* TO 'user_name';
GRANT CREATE ROUTINE ON *.* TO 'user_name';
GRANT ALTER ROUTINE ON *.* TO 'user_name';
GRANT EXECUTE ON *.* TO 'user_name';
GRANT INSERT, UPDATE ON AWS_POSTGRESQL_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_POSTGRESQL_EXT_DATA.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON AWS_POSTGRESQL_EXT_DATA.* TO 'user_name';
```

在上述範例中，請將 *user\$1name* 替換為您的使用者名稱。然後，將 *your\$1password* 替換為一個安全的密碼。

若要使用 Amazon RDS for MySQL 或 Aurora MySQL 作為目標，請將 `lower_case_table_names` 參數設定為 `1`。此值意味著 MySQL 服務器在處理資料表、索引、觸發程式和資料庫等對象名稱的識別碼時不區分大小寫。如果您已在目標執行個體中開啟二進位記錄功能，請將 `log_bin_trust_function_creators` 參數設定為 `1`。在這種情況下，您不需要使用 `DETERMINISTIC`、`READS SQL DATA` 或 `NO SQL` 特性來建立已儲存的函數。若要設定這些參數，請建立新的參數群組，或是修改現有的資料庫參數群組。