重裝 Debian + Tomcat + MySQL 後,原本正常的 Java 應用(Client → SOAP → Server → MySQL)拋出 SQL State: null 異常,本地 mysql -u root -p 卻可正常登入。
/etc/init.d/mysql restart
mysqladmin variables | grep socket
# 顯示 /var/run/mysqld/mysqld.sock
mysql -h 127.0.0.1 -u root -p
# 錯誤:Can't connect to MySQL server on 127.0.0.1
netstat -an | grep LISTEN
# 發現無 3306 埠監聽
/etc/mysql/my.cnf
bind-address、port 設定正確skip-networking 未被註解!# 註解 skip-networking
/etc/init.d/mysql restart
# netstat 再次確認 3306 已監聽
# Java 應用恢復正常
Debian 出於安全預設啟用 skip-networking,導致 MySQL 僅監聽 Unix Socket,不開放 TCP/IP 連線。Java 應用透過 JDBC 需要 TCP 連線,故失敗。上次安裝未遇此問題,推測與 Debian 安全策略版本差異有關。
# /etc/mysql/my.cnf
[mysqld]
# skip-networking # 註解此行
bind-address = 0.0.0.0 # 或具體 IP
port = 3306
修改後 必須重啟 MySQL 生效。
my.cnf 後務必 service mysql restartbind-address 而非依賴預設skip-networking 衝突