跳至內容

當我嘗試使用 IAM 驗證連線到 Amazon RDS for MySQL 時,為什麼會收到「存取遭拒」錯誤?

2 分的閱讀內容
0

我想使​​用 AWS Identity and Access Management (IAM) 驗證連線到 Amazon Relational Database Service (Amazon RDS) for MySQL 執行個體。但是,我收到「存取遭拒」錯誤。

簡短描述

錯誤訊息可能是因為 IAM 角色權限不足、關閉 IAM 驗證、資料庫使用者設定錯誤,或連線字串錯誤而發生。您可能會收到類似以下內容的錯誤訊息:

"ERROR 1045 (28000): Access denied for user 'root'@'10.0.4.253' (using password: YES)" (「錯誤 1045 (28000):拒絕使用者 'root'@'10.0.4.253' 存取 (使用密碼:是)」)

使用 AWSSupport-TroubleshootRDSIAMAuthentication 執行手冊自動驗證使用 Amazon RDS 執行個體進行 IAM 驗證所需的組態,然後使用解決方案解決此錯誤。

解決方案

IAM 角色權限不足

若要使用 IAM 資料庫驗證連線到您的 Amazon RDS for MySQL 執行個體,您必須具有 rds-db:connect 動作的存取權。如需詳細資訊,請參閱針對 IAM 資料庫存取建立和使用 IAM 政策

如果您使用服務控制政策 (SCP),請確認您的政策允許連線到資料庫執行個體。如需詳細資訊,請參閱使用 AWS Organizations 建立組織政策

啟用 IAM 驗證

預設情況下,資料庫執行個體的 IAM 驗證處於關閉狀態。若要啟用 IAM 驗證,請完成下列步驟:

  1. 開啟 Amazon RDS console (Amazon RDS 主控台)。
  2. 選取執行個體。
  3. 選擇 Modify (修改)。
  4. Database Authentication (資料庫驗證) 中,選擇 Password (密碼)。
  5. 選取 IAM 資料庫驗證。
  6. 若要更新您的組態設定,請選擇 Continue (繼續)。
  7. 若要修改執行個體,請選擇 Apply (套用)。

**注意:**如果您在更新叢集組態設定時選擇 Apply Immediately (立即套用),則所有待處理的修改都會立即套用,而不是在維護時段內套用。此動作可能會導致您的 Amazon RDS for MySQL 執行個體發生較長時間的中斷。如需詳細資訊,請參閱排程修改設定

資料庫使用者設定錯誤

AWSAuthenticationPlugin 負責處理 Amazon RDS for MySQL 執行個體的 IAM 驗證。若要確認此外掛程式已連線到您的 IAM 角色,請執行以下命令:

select user,plugin,host from mysql.user where user like '%db-user-name%';

**注意:**將 db-user-name 替換為您的資料庫使用者名稱。

輸出範例:

+------+-------------------------+------+|
user | plugin | host |
+------+-------------------------+------+
| root | AWSAuthenticationPlugin | % |
+------+-------------------------+------+
1 row in set (0.00 sec)

如果 IAM 角色使用特定主機,那麼您必須使用該主機名稱。另外,請確認您有存取指定資料庫的權限。

若要查看授予使用者的權限,請使用下列命令:

show grants for user;

**注意:**將 user 替換為使用者名稱。

若要授予另一個使用者權限,請使用下列命令:

grant select on mydb.mytable to user;

**注意:**將 mydb 替換為您的資料庫執行個體名稱,將 mytable 替換為您的資料表名稱,並將 user 替換為您的使用者名稱。

如需詳細資訊,請參閱 MySQL 網站上的 GRANT 陳述式

連線字串不正確

若要連線到 Amazon RDS for MySQL 資料庫,請在連線字串中使用 --enable-cleartext-plugin 選項。--enable-cleartext-plugin 語法會充當驗證權杖,您必須在資料庫連線和設定資料庫使用者時使用。

連線字串範例:

$ mysql -h <endpoint> -P 3306 --enable-cleartext-plugin --user=RDSConnect --password=$

相關資訊

如何允許使用者透過其 Amazon IAM 憑證對 Amazon RDS MySQL 資料庫執行個體進行驗證?

IAM 資料庫驗證