新部署的系統或啟用 IPv6 的機器上,手動安裝 MySQL 或護衛神面板安裝的實例,phpMyAdmin/Navicat 連接 localhost 失敗,但 127.0.0.1 正常。netstat -anp | grep 3306 發現:
tcp6 0 0 :::3306 :::* LISTEN 1234/mysqld
只有 IPv6 (tcp6) 監聽 3306,客戶端默認解析 localhost 為 IPv4 (127.0.0.1),導致連不上。
bind-address,在 IPv6 啟用的系統上會綁定 ::(雙棧),但部分舊版本/編譯選項僅綁定 IPv6[mysqld] bind-address = 0.0.0.0 # 若需同時支援 IPv6,可用雙棧寫法(MySQL 8.0+) # bind-address = :: # 或配置兩行(多實例分開) # bind-address = 0.0.0.0 # bind-address = ::
修改後 重啟 MySQL:systemctl restart mysqld
護衛神安裝的 MySQL 配置文件中通常已有該行但被註釋:
# bind-address = 0.0.0.0 → 改為 bind-address = 0.0.0.0
保存並重啟數據庫服務。
# 應看到 tcp (IPv4) 和 tcp6 (IPv6) 同時監聽 netstat -anp | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5678/mysqld tcp6 0 0 :::3306 :::* LISTEN 5678/mysqld
此時 localhost、127.0.0.1、::1 皆可連接。
[mysqld] bind-address = 127.0.0.1 -- 僅本地 IPv4 # 或 skip-networking -- 禁用所有網路,僅 Unix Socket
IPv6 環境下 MySQL 連接失敗 90% 是 bind-address 缺失或配置不當。**顯式指定 bind-address = 0.0.0.0 是最通用、兼容性最好的解法**,一勞永逸解決新舊客戶端共存問題。