

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

# 使用连接到 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\$1name>* 
+ 架构上的用法 *<database\$1name>* 
+ 在架构中的所有表上选择 *<database\$1name>* 
+ 在架构中的所有序列上选择 *<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 密钥**，请选择密钥的名称。

     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 \$1.\$1
+ ALTER ON \$1.\$1
+ DROP ON \$1.\$1
+ INDEX ON \$1.\$1
+ REFERENCES ON \$1.\$1
+ SELECT ON \$1.\$1
+ CREATE VIEW ON \$1.\$1
+ SHOW VIEW ON \$1.\$1
+ TRIGGER ON \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ 插入，在 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` 特性创建存储函数。要配置这些参数，请创建新的数据库参数组或修改现有数据库参数组。