使用 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 进行连接
-
在命令行界面上,使用以下命令获取 TGT。
kinit
user_name
-
使用以下
mysql
命令登录数据库集群的数据库实例端点。mysql -h
DB_instance_endpoint
-P 3306 -uuser_name
-p注意
如果在数据库实例上轮换 keytab,则身份验证可能会失败。在这种情况下,通过重新运行
kinit
获得新的 TGT。
直接连接
-
在命令行界面上,使用以下
mysql
命令登录到数据库集群的数据库实例端点。mysql -h
DB_instance_endpoint
-P 3306 -uuser_name
-p -
输入 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 -uuser_name
Aurora 全局数据库的 Kerberos 身份验证
Aurora 全局数据库支持适用于 Aurora MySQL 的 Kerberos 身份验证。要使用主数据库集群的 Active Directory 对辅助数据库集群上的用户进行身份验证,请将 Active Directory 复制到辅助 AWS 区域。可以使用与主集群相同的域 ID 在辅助群集上开启 Kerberos 身份验证。只有企业版的 Active Directory 才支持 AWS Managed Microsoft AD 复制。有关更多信息,请参阅《AWS 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 | 错误、警告、信息和调试消息 |