連接到MySQL伺服器時的疑難排解

Encountering connection problems while accessing a MySQL server is a common challenge for database users. These issues often arise due to incorrect configuration, user permissions, or compatibility problems. Below are the most common errors and their solutions to help you resolve connection issues efficiently.

1. 錯誤:主機 ‘xxx.xx.xxx.xxx’ 不允許連接到此 MySQL 伺服器

原因

此錯誤表示 MySQL 伺服器 不允許指定的主機或使用者訪問資料庫。這通常是由於分配給使用者或客戶端主機的權限不足所致。

解決方案

要解決此問題,請從 MySQL 命令行授予所需的權限給使用者:

MySQL

 

mysql> USE mysql; 
mysql> GRANT ALL ON *.* TO 'urUser'@'[urhostname]' IDENTIFIED BY 'urpassword'; 
mysql> FLUSH PRIVILEGES;

  • urUserurpassword 替換為您的實際使用者名稱和密碼。
  • [urhostname] 替換為嘗試連接的客戶端的主機名稱或 IP 地址。

如果問題仍然存在,請確認 MySQL 伺服器上的網絡功能已啟用。對於較新的 MySQL 版本,使用 MySQL 伺服器實例配置工具 來啟用 TCP/IP 網絡。

  1. 確保已勾選 TCP/IP 網絡選項。
  2. 指定端口(默認為 3306)並為此端口創建防火牆例外。

2. 錯誤:無法連接到任何指定的主機

原因

此通用錯誤可能由多種原因引起,包括伺服器配置錯誤或網絡設置不正確。

解決方案

嘗試以下步驟來解決問題:

1. 驗證 MySQL 伺服器是否正在運行

  • 在 Windows 上,確保 MySQL 服務正在運行。
  • 在 Linux 上,檢查伺服器狀態的方法是:
    MySQL

     

    systemctl status mysql

2. 啟用 TCP/IP 網路

  • 打開 MySQL 配置檔案(通常名為 my.inimy.cnf)。
  • 確保 skip-networking 這一行被註解或移除。
  • 在更改後重啟 MySQL 伺服器。

3. 檢查埠號

  • MySQL 伺服器通常運行在埠 3306
  • 在 MySQL 配置檔案中(my.inimy.cnf)驗證埠號。

4. 防火牆規則

  • 確保防火牆未阻止 MySQL 的埠。如果需要,為埠 3306 添加例外。

3. 錯誤:用戶 ‘UserName’@’HostName’ 訪問被拒絕(使用密碼:是)

原因

此錯誤通常是由於登錄憑據不正確,例如用戶名或密碼輸入錯誤。

解決方案

仔細檢查您使用的用戶名和密碼,確保:

  • 用戶名和密碼與在 MySQL 中設置的相符。
  • 用戶已被授予對特定資料庫或主機的訪問權限。
    MySQL

     

    GRANT ALL ON dbName.* TO 'UserName'@'HostName' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;

dbNameUserNameHostNamepassword 替換為您的實際資料庫名稱、用戶名、主機名稱和密碼。

4. 錯誤:客戶端不支持服務器請求的身份驗證協議;考慮升級 MySQL 客戶端

原因

此錯誤在連接到 MySQL 8.0 時很常見,因為它使用一種名為 caching_sha2_password 的新身份驗證協議。舊版 MySQL 客戶端或工具可能不支持此協議。

解決方案

選項 1:升級您的客戶端

升級到最新版本的 MySQL 客戶端或工具。例如,如果您正在使用 數據加載器,請升級到版本 4.9 或更高版本,該版本支持較新的身份驗證協議。

選項 2:舊客戶端的解決方法

如果您無法升級客戶端,請按照以下步驟在 MySQL 8.0 中創建兼容的用戶:

1. 創建一個新用戶。

MySQL

 

mysql> CREATE USER 'user1'@'localhost' IDENTIFIED BY 'passxxx';

2. 授予所需的權限。

MySQL

 

mysql> GRANT ALL ON *.* TO 'user1'@'localhost' IDENTIFIED BY 'passxxx';

3. 更改身份驗證方法。

MySQL

 

mysql> ALTER USER 'user1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'passxxx';

此命令將用戶的身份驗證方法恢復為舊版 mysql_native_password 協議,該協議與舊客戶端兼容。

您現在可以使用這個用戶(user1)使用舊工具或庫連接到 MySQL 8.0。

故障排除 MySQL 連接問題通常涉及配置設置、用戶權限或客戶端和服務器之間的兼容性。通過遵循上述解決方案,您可以解決常見的錯誤,例如權限拒絕、主機配置錯誤或協議不匹配。

為了持續的數據庫管理,確保您的 MySQL 服務器和工具保持最新,並定期檢查用戶權限和網絡設置,以避免未來的連接問題。

Source:
https://dzone.com/articles/troubleshooting-mysql-connection-issues