

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Kerberos 身分驗證連線至 Aurora MySQL
<a name="aurora-mysql-kerberos-connecting"></a>

為避免發生錯誤，請在 Unix 平台上使用 8.0.26 或更高版本的 MySQL 用戶端，在 Windows 上則使用 8.0.27 或更高版本。

## 使用 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) 尚未存在，系統會產生一份 TGT。`authentication_kerberos` 外掛程式會使用 TGT 來取得*服務票證*，然後將其顯示給 Aurora MySQL 資料庫伺服器。

您可以在 Windows 或 Unix 上，透過 Kerberos 身分驗證，以 MySQL 用戶端連線至 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 複寫到次要 AWS 區域。您可以使用與主要叢集相同的網域 ID，在次要叢集上開啟 Kerberos 身分驗證。只有企業版的 Active Directory 支援 AWS Managed Microsoft AD 複寫。如需詳細資訊，請參閱《AWS Directory Service 管理指南》**中的[多區域複寫](https://docs.aws.amazon.com/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 快取**
+ 請新增 `[appdefaults]` 區段至 `/etc/krb5.conf`，如下所示：

  ```
  [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 | 錯誤、警告、資訊和偵錯訊息 | 