

# 使用兼容 PostgreSQL 的客户端访问 Aurora DSQL
<a name="accessing"></a>

Aurora DSQL 使用 [PostgreSQL 有线协议](https://www.postgresql.org/docs/current/protocol.html)。您可以通过各种工具和客户端（例如，AWS CloudShell、psql、DBeaver 和 DataGrip）连接到 PostgreSQL。下表汇总了 Aurora DSQL 与常见 PostgreSQL 连接参数的对应关系：


| PostgreSQL | Aurora DSQL | 备注 | 
| --- | --- | --- | 
| 角色（也称为用户或组） | 数据库角色 | Aurora DSQL 为您创建一个名为 admin 的角色。当您创建自定义数据库角色时，您必须使用 admin 角色将其与 IAM 角色关联，以便在连接到集群时进行身份验证。有关更多信息，请参阅 [使用数据库角色和 IAM 身份验证](using-database-and-iam-roles.md)。 | 
| 主机（也称为主机名或主机规格） | 集群端点 | Aurora DSQL 单区域集群提供单个托管式端点，当区域内出现不可用性问题时会自动重定向流量。 | 
| 端口 | 不适用：使用默认值 5432 | 这是 PostgreSQL 默认值。 | 
| 数据库（dbname） | 使用 postgres | Aurora DSQL 会在您创建集群时为您创建此数据库。 | 
| SSL 模式 | 始终在服务器端启用 SSL | 在 Aurora DSQL 中，Aurora DSQL 支持 require SSL 模式。Aurora DSQL 会拒绝没有 SSL 的连接。 | 
| 密码 | 身份验证令牌 | Aurora DSQL 需要临时身份验证令牌，而不是长期密码。要了解更多信息，请参阅[在 Amazon Aurora DSQL 中生成身份验证令牌](SECTION_authentication-token.md)。 | 

连接时，Aurora DSQL 要求使用签名的 IAM [身份验证令牌](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/SECTION_authentication-token.html)替代传统密码。这些临时令牌通过 AWS 签名版本 4 生成，并且仅在建立连接期间使用。建立连接后，会话将保持活动状态，直至会话结束或客户端断开连接。

如果您尝试使用过期的令牌打开新会话，连接请求将失败，并且必须生成新令牌。有关更多信息，请参阅 [在 Amazon Aurora DSQL 中生成身份验证令牌](SECTION_authentication-token.md)。

## 支持的会话参数
<a name="accessing-session-parameters"></a>

Aurora DSQL 可自动优化存储、连接管理和事务处理，因此它支持一组有针对性的会话参数。Aurora DSQL 接受下表中列出的参数。该参数集之外的参数返回以下错误：

```
ERROR: setting configuration parameter "{{parameter_name}}" not supported
```

Aurora DSQL 支持以下 PostgreSQL 会话参数。除非另有说明，否则您可以使用 `SET`、`SET SESSION` 设置这些参数，或将这些参数设置为连接字符串选项。也可以使用 `SET LOCAL` 在单个事务的持续时间内设置这些参数中的任何参数。使用 `RESET` 可将参数还原为其默认值。


**支持的会话参数**  

| 参数 | 类别 | 说明 | 
| --- | --- | --- | 
| application\_name | 客户端标识 | 设置在连接元数据中报告的应用程序名称。用于识别处于监控下的连接。 | 
| client\_encoding | 本地化 | 设置客户端字符编码。数据库在内部使用 UTF-8。 | 
| datestyle | 输出格式 | 设置日期和时间值的显示格式（例如 ISO, MDY）。 | 
| extra\_float\_digits | 输出格式 | 设置所显示的浮点值位数。某些驱动程序（例如 JDBC）使用此参数。 | 
| intervalstyle | 输出格式 | 设置间隔值的显示格式。 | 
| timezone | 本地化 | 设置会话的时区。Aurora DSQL 在内部以 UTC 格式存储所有可识别时区的日期和时间。此参数控制 Aurora DSQL 如何向客户端显示值。 | 
| search\_path | 架构解析 | 为非限定的对象名称设置架构搜索顺序。 | 
| enable\_bitmapscan | 查询计划程序 | 启用或禁用查询计划程序使用位图扫描计划类型。 | 
| enable\_hashjoin | 查询计划程序 | 启用或禁用查询计划程序使用哈希联接计划类型。 | 
| enable\_indexonlyscan | 查询计划程序 | 启用或禁用查询计划程序使用仅限索引扫描计划类型。 | 
| enable\_indexscan | 查询计划程序 | 启用或禁用查询计划程序使用索引扫描计划类型。 | 
| enable\_material | 查询计划程序 | 启用或禁用查询计划程序使用具体化。 | 
| enable\_mergejoin | 查询计划程序 | 启用或禁用查询计划程序使用合并联接计划类型。 | 
| enable\_nestloop | 查询计划程序 | 启用或禁用查询计划程序使用嵌套循环联接计划。 | 
| enable\_seqscan | 查询计划程序 | 启用或禁用查询计划程序使用顺序扫描计划类型。 | 
| disable\_sync\_create\_index | 特定于 Aurora DSQL | 控制 CREATE INDEX 是否以异步方式运行。默认值为 on，这意味着 Aurora DSQL 以异步方式创建索引。设置为 off 可在空表上以同步方式创建索引。 | 
| role | 会话身份 | 设置当前角色。在 Aurora DSQL 中，您只能在事务块中使用 SET LOCAL 来设置此参数。 | 

Aurora DSQL 自动管理数据库的以下方面，因此您无需配置相应的 PostgreSQL 会话参数：
+ **连接和网络参数**：Aurora DSQL 在内部管理连接生命周期和 TCP 设置，包括 `tcp_keepalives_idle`、`tcp_keepalives_interval` 和 `tcp_keepalives_count`。
+ **内存和资源参数**：Aurora DSQL 自动管理内存分配，包括 `work_mem` 和 `shared_buffers`。
+ **超时参数**：Aurora DSQL 强制执行其自己的事务持续时间限制，包括 `statement_timeout`、`lock_timeout` 和 `idle_in_transaction_session_timeout`。
+ **复制和 WAL 参数**：Aurora DSQL 通过其内置的多区域架构（包括 `wal_level` 和 `synchronous_commit`）自动处理复制。
+ **日志记录参数**：Aurora DSQL 在内部管理日志记录，包括 `log_statement` 和 `client_min_messages`。
+ **事务参数**：Aurora DSQL 对所有事务使用固定的 `REPEATABLE READ` 隔离级别。如果您的驱动程序需要指定隔离级别，请使用 `BEGIN ISOLATION LEVEL REPEATABLE READ`。

## 使用 SQL 客户端访问 Aurora DSQL
<a name="accessing-sql-clients"></a>

Aurora DSQL 支持通过多种兼容 PostgreSQL 的客户端来连接到您的集群。以下各部分介绍如何使用 AWS CloudShell 或本地命令行通过 PostgreSQL 进行连接，以及如何使用基于 GUI 的工具（例如 DBeaver 和 JetBrains DataGrip）进行连接。每个客户端均需要一个有效的身份验证令牌，如上一部分所述。

**Topics**
+ [支持的会话参数](#accessing-session-parameters)
+ [使用 SQL 客户端访问 Aurora DSQL](#accessing-sql-clients)
+ [使用 DBeaver 访问 Aurora DSQL](accessing-dbeaver.md)
+ [使用 JetBrains DataGrip 访问 Aurora DSQL](accessing-datagrip.md)
+ [使用 PostgreSQL 交互式终端（psql）访问 Aurora DSQL](accessing-psql.md)
+ [使用适用于 SQLTools 的 Aurora DSQL 驱动程序](accessing-vscode.md)
+ [问题排查](#accessing-troubleshooting)

## 问题排查
<a name="accessing-troubleshooting"></a>

**SQL 客户端的身份验证凭证过期**

已建立的会话会在最多 1 小时内保持身份验证状态，或者直到出现显式断开连接或客户端超时。如果需要建立新连接，则必须在连接的**密码**字段中生成并提供新的身份验证令牌。尝试打开新会话（例如，列出新表或打开新的 SQL 控制台）会强制尝试新的身份验证。如果在**连接**设置中配置的身份验证令牌不再有效，则该新会话将失败，并且所有先前打开的会话将变为无效。在通过 `expires-in` 选项选择 IAM 身份验证令牌的持续时间时，请记住一点：该持续时间默认设置为 15 分钟，最大值可设置为 7 天。

此外，请参阅 Aurora DSQL 文档的[故障排除](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/troubleshooting.html)部分。