在 macOS/XAMPP 環境下,Node.js 使用 mysql 套件連線本機資料庫時,若不指定 Unix Socket 路徑,會報錯 Error: connect ECONNREFUSED。
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'your_user', // 替換為你的用戶名
password: 'your_pass', // 替換為你的密碼
database: 'your_db', // 替換為資料庫名
socketPath: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock', // 關鍵!
port: 3306
});
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('connected as id ' + connection.threadId);
});
mysql 驅動預設嘗試 TCP 連線,找不到 Socket 導致拒絕連線。mysql.sock 路徑即可繞過 TCP 直連 Socket,解決問題。| 環境 | 預設路徑 |
|---|---|
| XAMPP macOS | /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock |
| XAMPP Linux | /opt/lampp/var/mysql/mysql.sock |
| 原生 MySQL Linux | /var/run/mysqld/mysqld.sock 或 /tmp/mysql.sock |