

# 在 RDS for PostgreSQL 数据库实例中设置可信语言扩展
<a name="PostgreSQL_trusted_language_extension-setting-up"></a>

以下步骤假设您的 RDS for PostgreSQL 数据库实例与自定义数据库参数组相关联。您可以使用 AWS 管理控制台或 AWS CLI 来执行这些步骤。

当您在 RDS for PostgreSQL 数据库实例中设置可信语言扩展时，您可以将其安装在特定的数据库中，供对该数据库拥有权限的数据库用户使用。

## 控制台
<a name="PostgreSQL_trusted_language_extension-setting-up.CON"></a>

**设置可信语言扩展**

使用作为 `rds_superuser` 组（角色）成员的账户执行以下步骤。

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 RDS for PostgreSQL 数据库实例。

1. 打开 的**配置**选项卡。RDS for PostgreSQL 数据库实例的 Configuration（配置）选项卡。在实例详细信息中，找到 **Parameter group**（参数组）链接。

1. 选择此链接以打开与您的 RDS for PostgreSQL 数据库实例关联的自定义参数。

1. 在 **Parameters**（参数）搜索字段中，键入 `shared_pre` 以查找 `shared_preload_libraries` 参数。

1. 选择 **Edit parameters**（编辑参数）以访问属性值。

1. 将 `pg_tle` 添加到 **Values**（值）字段的列表中。使用逗号分隔值列表中的项目。  
![\[添加了 pg_tle 的 shared_preload_libraries 参数的图像。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/apg_rpg_shared_preload_pg_tle.png)

1. 重启 RDS for PostgreSQL 数据库实例，以使对 `shared_preload_libraries` 参数的更改生效。

1. 当实例可用时，验证 `pg_tle` 是否已初始化。使用 `psql` 连接到 RDS for PostgreSQL 数据库实例，然后运行以下命令。

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pg_tle
   (1 row)
   ```

1. 初始化 `pg_tle` 扩展后，您现在可以创建此扩展了。

   ```
   CREATE EXTENSION pg_tle;
   ```

   可以使用以下 `psql` 元命令验证扩展是否已安装。

   ```
   labdb=> \dx
                            List of installed extensions
     Name   | Version |   Schema   |                Description
   ---------+---------+------------+--------------------------------------------
    pg_tle  | 1.0.1   | pgtle      | Trusted-Language Extensions for PostgreSQL
    plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
   ```

1. 在设置 RDS for PostgreSQL 数据库实例时，将 `pgtle_admin` 角色授予为其创建的主用户名。如果您接受了默认值，则它就是 `postgres`。

   ```
   labdb=> GRANT pgtle_admin TO postgres;
   GRANT ROLE
   ```

   您可以使用 `psql` 元命令来验证授权是否已完成，如以下示例中所示。输出中仅显示 `pgtle_admin` 和 `postgres` 角色。有关更多信息，请参阅[了解 rds\$1superuser 角色](Appendix.PostgreSQL.CommonDBATasks.Roles.rds_superuser.md)。

   ```
   labdb=> \du
                             List of roles
       Role name    |           Attributes            |               Member of
   -----------------+---------------------------------+-----------------------------------
   pgtle_admin     | Cannot login                     | {}
   postgres        | Create role, Create DB          +| {rds_superuser,pgtle_admin}
                   | Password valid until infinity    |...
   ```

1. 使用 `\q` 元命令关闭 `psql` 会话。

   ```
   \q
   ```

要开始创建 TLE 扩展，请参阅 [示例：使用 SQL 创建可信语言扩展](PostgreSQL_trusted_language_extension-creating-TLE-extensions.md#PostgreSQL_trusted_language_extension-simple-example)。

## AWS CLI
<a name="PostgreSQL_trusted_language_extension-setting-up-CLI"></a>

在使用 CLI 命令时，您可以通过将您的 AWS CLI 配置为使用默认 AWS 区域来避免指定 `--region` 参数。有关更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[配置基础知识](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)。

**设置可信语言扩展**

1. 使用 [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) AWS CLI 命令将 `pg_tle` 添加到 `shared_preload_libraries` 参数。

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name custom-param-group-name \
      --parameters "ParameterName=shared_preload_libraries,ParameterValue=pg_tle,ApplyMethod=pending-reboot" \
      --region aws-region
   ```

1. 使用 [reboot-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/reboot-db-instance) AWS CLI 命令重启 RDS for PostgreSQL 数据库实例并初始化 `pg_tle` 库。

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier your-instance \
       --region aws-region
   ```

1. 当实例可用时，您可以验证 `pg_tle` 是否已初始化。使用 `psql` 连接到 RDS for PostgreSQL 数据库实例，然后运行以下命令。

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pg_tle
   (1 row)
   ```

   初始化 `pg_tle` 后，您现在可以创建扩展了。

   ```
   CREATE EXTENSION pg_tle;
   ```

1. 在设置 RDS for PostgreSQL 数据库实例时，将 `pgtle_admin` 角色授予为其创建的主用户名。如果您接受了默认值，则它就是 `postgres`。

   ```
   GRANT pgtle_admin TO postgres;
   GRANT ROLE
   ```

1. 按如下方式关闭 `psql` 会话。

   ```
   labdb=> \q
   ```

要开始创建 TLE 扩展，请参阅 [示例：使用 SQL 创建可信语言扩展](PostgreSQL_trusted_language_extension-creating-TLE-extensions.md#PostgreSQL_trusted_language_extension-simple-example)。