Error: conecte ECONNREFUSED 127.0.0.1:3306

Error: conecte ECONNREFUSED 127.0.0.1:3306

En primer lugar, era programador de Windows y recientemente me cambié a Linux (Ubuntu 18.04distribución). En Windows mi código funcionaba bien pero en Linux empezó a mostrar el error.Error: connect ECONNREFUSED 127.0.0.1:3306

mi código de conexión:

import { createConnection } from 'mysql';

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

servidor.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 comenzó con privilegios sudo: complemento del servidor xampp

Respuesta1

La razón de esto es que ya no puedes conectarte a MySQL con la rootcuenta. Esta regla se cambió (y se aplicó) dentro de MySQL a partir de hace unos años. Si bien es posible actualizar la configuración para permitirlo, se desaconseja encarecidamenteincluso para entornos de desarrollo.

En cambio, si necesita que la aplicación tenga control total sobre una base de datos, puede crear una cuenta y darle control total de esta manera:

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

En caso de que quieras que la aplicación tenga aún más control, puedes permitirle el acceso a todo, incluida la posibilidad de crear nuevas cuentas, así:

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

información relacionada