使用 Kerberos 身份验证连接到 Aurora MySQL - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Kerberos 身份验证连接到 Aurora MySQL

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

使用 Aurora MySQL Kerberos 登录名连接到数据库集群

要通过 Kerberos 身份验证连接到 Aurora MySQL,您需要按照 步骤 6:创建使用 Kerberos 身份验证的 Aurora MySQL 用户 中的说明,以您创建的数据库用户身份登录。

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

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

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

您可以使用以下方法之一进行连接:

  • 手动获取 TGT。在这种情况下,您不需要向 MySQL 客户端提供密码。

  • 直接向 MySQL 客户端提供 Active Directory 登录的密码。

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

通过手动获取 TGT 进行连接
  1. 在命令行界面上,使用以下命令获取 TGT。

    kinit user_name
  2. 使用以下 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
  2. 输入 Active Directory 用户的密码。

在 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 身份验证

Aurora 全局数据库支持适用于 Aurora MySQL 的 Kerberos 身份验证。要使用主数据库集群的 Active Directory 对辅助数据库集群上的用户进行身份验证,请将 Active Directory 复制到辅助 Amazon Web Services 区域。可以使用与主集群相同的域 ID 在辅助群集上开启 Kerberos 身份验证。只有企业版的 Active Directory 才支持 Amazon Managed Microsoft AD 复制。有关更多信息,请参阅《Amazon Directory Service 管理指南》中的多区域复制

从 RDS for MySQL 迁移到 Aurora MySQL

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

ALTER USER user_name IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';

阻止票证缓存

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

注意

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

防止 TGT 缓存
  • /etc/krb5.conf 中添加 [appdefaults] 部分,如下所示:

    [appdefaults] mysql = { destroy_tickets = true }

针对 Kerberos 身份验证的日志记录

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

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

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