

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用连接到 PostgreSQL 数据库 AWS Schema Conversion Tool
<a name="CHAP_Source.PostgreSQL"></a>

您可以使用 AWS SCT 将架构、数据库代码对象和应用程序代码从 PostgreSQL 转换为以下目标：
+ Amazon RDS for MySQL
+ Amazon Aurora MySQL 兼容版
+ Amazon RDS for PostgreSQL
+ Amazon Aurora PostgreSQL 兼容版

有关详细信息，请参阅以下章节：

**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 用作源所需的权限：
+ 连接数据库 {{<database\_name>}} 
+ 架构上的用法 {{<database\_name>}} 
+ 在架构中的所有表上选择 {{<database\_name>}} 
+ 在架构中的所有序列上选择 {{<database\_name>}} 

## 连接到作为源的 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 密钥**，请选择密钥的名称。

     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_cn/SchemaConversionTool/latest/userguide/CHAP_Source.PostgreSQL.html)

1. 选择 “**测试连接**” 以验证是否 AWS SCT 可以连接到您的源数据库。

1. 选择**连接**以连接到源数据库。

## 将 MySQL 用作目标数据库的权限
<a name="CHAP_Source.PostgreSQL.ConfigureMySQL"></a>

从 PostgreSQL 迁移时，MySQL 作为目标所需的权限如下：
+ CREATE ON \*.\*
+ ALTER ON \*.\*
+ DROP ON \*.\*
+ INDEX ON \*.\*
+ REFERENCES ON \*.\*
+ SELECT ON \*.\*
+ CREATE VIEW ON \*.\*
+ SHOW VIEW ON \*.\*
+ TRIGGER ON \*.\*
+ CREATE ROUTINE ON \*.\*
+ ALTER ROUTINE ON \*.\*
+ EXECUTE ON \*.\*
+ 插入，在 AWS\_POSTGRESQL \_EXT 上更新。 \*
+ 在 AWS\_POSTGRESQL \_EXT\_DATA 上插入、更新、删除。 \*
+ 在 AWS\_POSTGRESQL \_EXT\_DATA 上创建临时表。 \*

您可以使用以下代码示例创建数据库用户并授予权限。

```
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\_name}}使用您的用户名替换。然后，{{your\_password}}替换为安全密码。

要使用 Amazon RDS for MySQL 或 Aurora MySQL 作为目标，请将 `lower_case_table_names` 参数设置为 `1`。此值意味着 MySQL 服务器在处理表、索引、触发器和数据库等对象名称的标识符时不区分大小写。如果目标实例中已开启二进制日志记录，请将 `log_bin_trust_function_creators` 参数设置为 `1`。在这种情况下，您无需使用 `DETERMINISTIC`、`READS SQL DATA` 或 `NO SQL` 特性创建存储函数。要配置这些参数，请创建新的数据库参数组或修改现有数据库参数组。