錯誤:連接ECONNREFUSED 127.0.0.1:3306

錯誤:連接ECONNREFUSED 127.0.0.1:3306

首先我是 Windows 程式設計師,最近切換到 Linux(ubuntu 18.04發行版)。在 Windows 上我的程式碼工作正常,但在 Linux 上它開始顯示錯誤。Error: connect ECONNREFUSED 127.0.0.1:3306

我的連接代碼:

import { createConnection } from 'mysql';

export default createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'rent_compair',
});

伺服器.js:

import express from 'express';
import cors from 'cors';
import admin from './routes/admin';
import db from './config/mysql';

const app = express();

db.connect((err) => {
if (err) throw err;

console.log('Db Connected!');
});

app.use(cors());
app.use(express.json());

app.use('/', admin);
app.listen(process.env.PORT || 5000, console.log('Server Connected!'));

xampp 以 sudo 權限啟動: xampp伺服器快照

答案1

出現這種情況的原因是您無法使用以下命令連接到 MySQLroot再使用該帳戶連線到 MySQL。幾年前,這條規則在 MySQL 中被更改並強制執行。雖然可以更新配置以允許這樣做,但強烈建議不要這樣做即使對於開發環境

相反,如果您需要應用程式完全控制資料庫,您可以建立帳戶並賦予其完全控制權,如下所示:

CREATE USER 'app_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'superSecretPassword!123';
GRANT ALL ON `database`.* TO 'app_name'@'localhost';

如果您希望應用程式擁有更多控制權,您可以允許它存取所有內容,包括建立新帳戶的能力,如下所示:

GRANT ALL ON *.* TO 'app_name'@'localhost' WITH GRANT OPTION;

相關內容