错误:连接 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

原因是您无法使用root帐户连接到 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;

相关内容