

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

# 使用连接到 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 源数据库连接信息，请按照以下说明进行操作：



<table>
<thead>
  <tr><th>参数</th><th>Action</th></tr>
</thead>
<tbody>
  <tr><td><b>服务器名称</b></td><td>输入源数据库服务器的域名系统（DNS）名称或 IP 地址。<br />您可以使用地址协议连接到您的源 PostgreSQL IPv6 数据库。为此，请确保使用方括号输入 IP 地址，如以下示例所示。<pre>[2001:db8:ffff:ffff:ffff:ffff:ffff:fffe]</pre></td></tr>
  <tr><td><b>服务器端口</b></td><td>输入用于连接到源数据库服务器的端口。</td></tr>
  <tr><td><b>数据库</b></td><td>输入 PostgreSQL 数据库的名称。</td></tr>
  <tr><td><b>用户名</b>和<b>密码</b></td><td>输入数据库凭证，以便连接到源数据库服务器。<br />AWS SCT 仅当您选择在项目中连接到您的数据库时，才使用该密码连接到您的源数据库。为了避免泄露源数据库的密码， AWS SCT 不会默认存储该密码。如果您关闭 AWS SCT 项目并重新打开它，则系统会提示您输入密码以根据需要连接到源数据库。</td></tr>
  <tr><td><b>使用 SSL</b></td><td>选择此选项以使用安全套接字层 (SSL) 连接到数据库。在 <b>SSL</b> 选项卡上提供以下其他信息（如适用）：<ul><li> <b>验证服务器证书</b>：选择此选项以使用信任存储验证服务器证书。 </li><li> <b>信任存储</b>：包含证书的信任存储的位置。要使此位置显示在<b>全局设置</b>部分，请务必将其添加。 </li></ul></td></tr>
  <tr><td><b>存储密码</b></td><td>AWS SCT 创建用于存储 SSL 证书和数据库密码的安全保管库。启用此选项可让您存储数据库密码并在不需要输入密码的情况下快速连接到数据库。</td></tr>
  <tr><td><b>PostgreSQL 驱动程序路径</b></td><td>输入用于连接到源数据库的驱动程序的路径。有关更多信息，请参阅 <a href="CHAP_Installing.JDBCDrivers.md">正在安装 JDBC 驱动程序 AWS Schema Conversion Tool</a>。<br />如果您将驱动程序路径存储在全局项目设置中，则驱动程序路径不会显示在连接对话框中。有关更多信息，请参阅 <a href="CHAP_Installing.JDBCDrivers.md#CHAP_Installing.JDBCDrivers.Settings">在全局设置中存储驱动程序路径</a>。</td></tr>
</tbody>
</table>


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` 特性创建存储函数。要配置这些参数，请创建新的数据库参数组或修改现有数据库参数组。