

# 使用 Kerberos 身份验证连接到 Aurora MySQL
<a name="aurora-mysql-kerberos-connecting"></a>

为避免错误，请在 Unix 平台上使用版本 8.0.26 或更高版本的 MySQL 客户端，在 Windows 上使用 8.0.27 或更高版本的 MySQL 客户端。

## 使用 Aurora MySQL Kerberos 登录名连接到数据库集群
<a name="aurora-mysql-kerberos-connecting.login"></a>

要通过 Kerberos 身份验证连接到 Aurora MySQL，您需要按照 [步骤 6：创建使用 Kerberos 身份验证的 Aurora MySQL 用户](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins) 中的说明，以您创建的数据库用户身份登录。

在命令提示符下，连接到其中一个与 Aurora MySQL 数据库集群关联的端点。当系统提示您输入密码时，请输入与该用户名关联的 Kerberos 密码。

当您使用 Kerberos 进行身份验证时，如果*票证授予票证*（TGT）尚不存在，则会生成此票证。`authentication_kerberos` 插件使用 TGT 获取*服务票证*，然后将其出示给 Aurora MySQL 数据库服务器。

可以使用 MySQL 客户端，在 Windows 或 Unix 上通过 Kerberos 身份验证连接到 Aurora MySQL。

### Unix
<a name="aurora-mysql-kerberos-connecting.login.unix"></a>

您可以使用以下方法之一进行连接：
+ 手动获取 TGT。在这种情况下，您不需要向 MySQL 客户端提供密码。
+ 直接向 MySQL 客户端提供 Active Directory 登录的密码。

在 Unix 平台上，MySQL 客户端版本 8.0.26 及更高版本支持客户端插件。

**通过手动获取 TGT 进行连接**

1. 在命令行界面上，使用以下命令获取 TGT。

   ```
   kinit {{user_name}}
   ```

1. 使用以下 `mysql` 命令登录数据库集群的数据库实例端点。

   ```
   mysql -h {{DB_instance_endpoint}} -P 3306 -u {{user_name}} -p
   ```
**注意**  
如果在数据库实例上轮换 keytab，则身份验证可能会失败。在这种情况下，通过重新运行 `kinit` 获得新的 TGT。

**直接连接**

1. 在命令行界面上，使用以下 `mysql` 命令登录到数据库集群的数据库实例端点。

   ```
   mysql -h {{DB_instance_endpoint}} -P 3306 -u {{user_name}} -p
   ```

1. 输入 Active Directory 用户的密码。

### Windows
<a name="aurora-mysql-kerberos-connecting.login.win"></a>

在 Windows 上，身份验证通常在登录时完成，因此，您无需手动获取 TGT 即可连接到 Aurora MySQL 数据库集群。数据库用户名的大小写必须与 Active Directory 中用户的字符大小写相匹配。例如，如果 Active Directory 中的用户显示为 `Admin`，则数据库用户名必须为 `Admin`。

在 Windows 上，MySQL 客户端版本 8.0.27 及更高版本支持客户端插件。

**直接连接**
+ 在命令行界面上，使用以下 `mysql` 命令登录到数据库集群的数据库实例端点。

  ```
  mysql -h {{DB_instance_endpoint}} -P 3306 -u {{user_name}}
  ```

## Aurora 全局数据库的 Kerberos 身份验证
<a name="aurora-mysql-kerberos-connecting.global"></a>

Aurora 全局数据库支持适用于 Aurora MySQL 的 Kerberos 身份验证。要使用主数据库集群的 Active Directory 对辅助数据库集群上的用户进行身份验证，请将 Active Directory 复制到辅助 Amazon Web Services 区域。可以使用与主集群相同的域 ID 在辅助群集上开启 Kerberos 身份验证。只有企业版的 Active Directory 才支持 Amazon Managed Microsoft AD 复制。有关更多信息，请参阅《Amazon Directory Service 管理指南》**中的[多区域复制](https://docs.amazonaws.cn/directoryservice/latest/admin-guide/ms_ad_configure_multi_region_replication.html)。

## 从 RDS for MySQL 迁移到 Aurora MySQL
<a name="aurora-mysql-kerberos-connecting.rds"></a>

从启用了 Kerberos 身份验证的 RDS for MySQL 迁移到 Aurora MySQL 后，修改使用 `auth_pam` 插件创建的用户以使用 `authentication_kerberos` 插件。例如：

```
ALTER USER {{user_name}} IDENTIFIED WITH 'authentication_kerberos' BY '{{realm_name}}';
```

## 阻止票证缓存
<a name="aurora-mysql-kerberos.destroy-tickets"></a>

如果 MySQL 客户端应用程序启动时不存在有效的 TGT，则应用程序可以获取并缓存 TGT。如果要阻止缓存 TGT，请在 `/etc/krb5.conf` 文件中设置配置参数。

**注意**  
此配置仅适用于运行 Unix 的客户端主机，而不适用于运行 Windows 的客户端主机。

**防止 TGT 缓存**
+ 向 `/etc/krb5.conf` 中添加 `[appdefaults]` 部分，如下所示：

  ```
  [appdefaults]
    mysql = {
      destroy_tickets = true
    }
  ```

## 针对 Kerberos 身份验证的日志记录
<a name="aurora-mysql-kerberos.logging"></a>

`AUTHENTICATION_KERBEROS_CLIENT_LOG` 环境变量设置 Kerberos 身份验证的日志记录级别。您可以使用日志进行客户端调试。

允许的值为 1–5。日志消息写入标准错误输出。下表描述了每个日志记录级别。


| Logging level（日志记录级别） | 描述 | 
| --- | --- | 
| 1 或未设置 | 不记录 | 
| 2 | 错误消息 | 
| 3 | 错误和警告消息 | 
| 4 | 错误、警告和信息消息 | 
| 5 | 错误、警告、信息和调试消息 | 