錯誤訊息**"Error: Can't connect to MySQL server on 'localhost' (10061)"** 表示客戶端無法連線到MySQL 伺服器,通常原因如下:
1. **MySQL 服務未啟動**
- MySQL 伺服器可能沒有啟動。在Windows 中,可以開啟「服務」管理器,找到`MySQL` 服務並手動啟動。在Linux 中,可以使用下列命令檢查MySQL 是否正在執行:
『`bash
sudo systemctl status mysql # Ubuntu/Debian
sudo systemctl status mysqld # CentOS/Fedora
```
2. **連接埠號碼不正確**
- 預設情況下,MySQL 伺服器使用連接埠**3306**。如果設定檔中的連接埠號碼更改過,用戶端可能連接不上。
- 可以檢查MySQL 的設定檔(如`my.cnf` 或`my.ini`)中的連接埠號設置,確保用戶端連接到正確的連接埠。
3. **防火牆阻止連線**
- 本機防火牆可能阻止了MySQL 的連接埠。如果防火牆啟用了規則來阻止3306 端口,可以暫時停用防火牆或開放該端口。可以透過以下命令在Linux 上開放3306 連接埠:
『`bash
sudo ufw allow 3306 # Ubuntu 防火牆範例
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent # CentOS/Fedora
sudo firewall-cmd --reload # 重新載入防火牆
```
4. **綁定位址配置問題**
- 在MySQL 設定檔中,`bind-address` 設定可能只允許遠端連線或僅綁定到某個特定IP 位址。確保設定檔中的`bind-address` 設定為`127.0.0.1` 或`localhost`,以允許本機連線。
5. **Socket 檔案遺失或路徑不正確**
- 在某些系統中,MySQL 使用Unix Socket 檔案進行連線。確保設定檔中的`socket` 路徑正確,並且該檔案確實存在。預設情況下,該檔案通常位於`/var/run/mysqld/mysqld.sock` 或類似路徑。
6. **使用者權限問題**
- 如果連線的使用者沒有適當的權限,也可能無法連線。確保使用者`localhost` 上的權限正確,可以嘗試使用下列命令重新授予權限:
```sql
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
```
解決思路總結
依序檢查MySQL 服務狀態、連接埠設定、防火牆規則、綁定位址、Socket 檔案以及使用者權限,確保MySQL 設定和伺服器設定正確。