Ошибка: подключение ECONNREFUSED 127.0.0.1:3306

Ошибка: подключение ECONNREFUSED 127.0.0.1:3306

Сначала я был программистом Windows, а недавно перешел на Linux (убунту 18.04distro). На 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 сервер snap

решение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;

Связанный контент