連接失敗通常與服務狀態、網絡配置、權限設置相關,以下是逐步排查方案:
首先確認MySQL服務是否處于**active (running)**狀態。使用以下命令:
sudo systemctl status mysqld
sudo systemctl start mysqld
sudo systemctl enable mysqld
MySQL默認使用3306端口,需確保防火墻允許該端口通過:
# 查看防火墻狀態(CentOS 7+默認使用firewalld)
sudo firewall-cmd --state
# 若防火墻運行,開放3306端口(永久生效)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
sudo service iptables stop
編輯MySQL主配置文件(通常為/etc/my.cnf
或/etc/mysql/my.cnf
),找到[mysqld]
部分,確保bind-address設置為0.0.0.0
(允許所有IP連接)或服務器實際IP(僅允許特定IP連接):
[mysqld]
bind-address = 0.0.0.0 # 修改此項
# 確保沒有skip-networking選項(若有則刪除)
修改后重啟MySQL使配置生效:
sudo systemctl restart mysqld
默認情況下,MySQL用戶僅能從localhost連接。需為用戶授予遠程訪問權限:
# 登錄MySQL(本地連接)
mysql -u root -p
# 執行授權命令(替換username/password為目標用戶名和密碼)
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
# 刷新權限使更改立即生效
FLUSH PRIVILEGES;
%
替換為目標IP(如192.168.1.100
)。若以上步驟均無效,通過錯誤日志獲取詳細信息(日志路徑通常為/var/log/mysqld.log
):
# 查看最新日志(實時輸出)
sudo tail -f /var/log/mysqld.log
# 或查看最近100行日志
sudo tail -n 100 /var/log/mysqld.log
日志中可能包含端口沖突、權限不足、配置文件語法錯誤等具體原因。
確??蛻舳伺c服務器之間的網絡通暢:
# 測試服務器IP是否可達
ping <服務器IP>
# 測試3306端口是否開放
telnet <服務器IP> 3306 # 或使用nc命令:nc -zv <服務器IP> 3306
若MySQL無法啟動,可能是3306端口被其他進程占用:
# 查看3306端口的占用進程
sudo netstat -tlnp | grep 3306
# 若占用進程非MySQL,停止該進程或修改MySQL端口(修改my.cnf中的port項)
通過以上步驟,可覆蓋絕大多數MySQL連接失敗的場景。若問題仍未解決,建議根據錯誤日志中的具體信息進一步排查。