為什麼當我嘗試連線至 Amazon Aurora 資料庫叢集時出現「存取遭拒」錯誤?

2 分的閱讀內容
0

我想要對我的 Amazon Aurora MySQL 相容版本資料庫叢集進行驗證,但是出現「存取遭拒」錯誤。

簡短描述

若要向 Aurora MySQL 相容資料庫叢集進行驗證,您可以使用下列其中一個選項:

「存取遭拒」錯誤通常是因為您輸入了錯誤的用戶名或密碼。但是,此錯誤還有其他原因,包括:

  • 您輸入的使用者名稱或密碼無效。
  • 嘗試使用錯誤的主機進行連線。
  • 使用者不存在。
  • 使用者存在,但是用戶端主機沒有連線許可。
  • SSL 是必要項目,但是用戶端未使用。
  • 密碼中的特殊字元由 Bash 轉換。
  • IAM 身分驗證已關閉。
  • 使用 IAM 身分驗證時,IAM 角色許可不足。
  • 連線字串不正確。
  • 用於連線到 Amazon RDS Proxy 的身分驗證憑證不正確。這適用於使用原生使用者名稱/密碼模式時。
  • 與用戶端相關聯的 AWS Identity and Access Management (IAM) 使用者或角色未獲授權可以與 Amazon RDS Proxy 連線。這適用於使用 IAM 資料庫身分驗證時。

如需此錯誤的詳細資訊,請參閱 MySQL 文件的存取遭拒

解決方案

檢查資料庫執行個體是否接受連線

確認您的資料庫執行個體目前處於可用狀態。如需詳細資訊,請參閱 Amazon Relational Database Service (Amazon RDS)Aurora 文件以了解資料庫執行個體狀態。另外,請參閱如何解決連線至 Amazon RDS 資料庫執行個體時發生的問題?

針對使用資料庫憑證的連線進行疑難排解

密碼不正確

嘗試連線到資料庫時,請確定您輸入正確的使用者名稱和密碼。請勿在密碼中使用特殊字元。如需詳細資訊,請參閱如何重設 Amazon RDS 資料庫執行個體的主要使用者密碼?

使用者名稱不正確

檢查使用者是否存在:

mysql> SELECT user FROM mysql.user WHERE User='username';

如果該使用者不存在,則建立一個新使用者:

mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'new-password-here';
mysql> FLUSH
        PRIVILEGES;

如需詳細資訊,請參閱主要使用者帳戶權限

從錯誤的主機連線

當您嘗試連線到資料庫執行個體時,請務必指定正確的主機 (具有 -h 旗標) 和連接埠。檢閱 Amazon RDS 主控台上的 Instance (執行個體) 頁面,以檢查您的 Amazon RDS 主機名稱和連接埠。如需詳細資訊,請參閱連線至 Amazon Aurora 資料庫叢集

使用者存在,但是用戶端主機沒有連線許可

檢查哪些主機使用者/主機 MySQL 允許來自以下的連線:

mysql> SELECT host, user FROM mysql.user WHERE User='username';

然後,使用正確主機 (用戶端 IP) 或 % (萬用字元) 建立使用者,以符合任何可能的 IP 地址:

mysql> CREATE USER 'dbuser'@'%' IDENTIFIED BY 'new-password-here';

SSL 是必要項目,但是用戶端未使用

透過在資料庫執行個體上執行下列查詢,檢查是否有強制使用 SSL 的使用者:

mysql> SELECT * FROM mysql.user WHERE ssl_type <> '';

如果使用者已強制使用 SSL,則您必須使用 SSL 進行連線。如需詳細資訊,請參閱使用 SSL/TLS 加密與資料庫叢集之間的連線

重複使用者

檢查是否有使用相同使用者名稱的使用者:

mysql> SELECT host, user FROM mysql.user WHERE User='username';

若要解決此問題,請使用其他使用者 (重複的主要使用者) 或具有 DROP 其他使用者許可的使用者登入。捨棄次要使用者之後,第一個使用者可以正常連線。

如需詳細資訊,請參閱如何為執行 MySQL 的 Amazon RDS 資料庫執行個體建立另一個主要使用者?

密碼中的特殊字元由 Bash 轉換

透過以單引號包裝密碼來防止 Bash 解釋特殊字元。

連線封包不包含正確的資訊

需要超過 connect_timeout秒才能取得連線封包。在您與 DBA 討論之後,您可以調整此資料庫參數的值,以更佳理解您的查詢和工作負載。

max_allowed_packet 變數值太小,或查詢需要比您為資料庫執行個體所配置更多的記憶體

根據預設,max_allowed_packet值很小。這樣會讓值擷取大型且可能不正確的封包。如果您使用的是大型 BLOB 資料欄或長字串,請增加 max_allowed_packet 的值。如需詳細資訊,請參閱設定 Amazon RDS for MySQL 參數的最佳實務

針對使用 IAM 身分驗證的連線進行疑難排解

若要連線,請參閱如何允許使用者使用他們的 IAM 憑證對 Amazon RDS MySQL 資料庫執行個體進行身分驗證?

如果您無法連線,請參閱為什麼使用 IAM 身分驗證嘗試連線至 Amazon RDS for MySQL 時,會遇到存取遭拒的錯誤?

針對使用 Amazon RDS Proxy 的連線進行疑難排解

若要連線,請參閱如何使用 Amazon RDS Proxy 連線到我的 Amazon RDS MySQL 資料庫執行個體或 Aurora MySQL 資料庫叢集?

如果您無法連線,請參閱為什麼我無法使用 RDS Proxy 連線到我的 Amazon RDS 資料庫或 Amazon Aurora 資料庫執行個體?


相關資訊

連線至 Amazon Aurora MySQL 資料庫叢集

MariaDB、MySQL 和 PostgreSQL 的 IAM 資料庫身分驗證

使用參數群組

如何對使用 VPC 的公有或私有子網路的 Amazon RDS 資料庫執行個體連線問題進行疑難排解?

AWS 官方
AWS 官方已更新 1 年前