Erro: conecte ECONNREFUSED 127.0.0.1:3306

Erro: conecte ECONNREFUSED 127.0.0.1:3306

Primeiramente eu era um programador de Windows e recentemente mudei para Linux (Ubuntu 18.04distribuição). No Windows meu código estava funcionando bem, mas no Linux começou a mostrar o erro.Error: connect ECONNREFUSED 127.0.0.1:3306

meu código de conexão:

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 começou com privilégios sudo: snap do servidor xampp

Responder1

A razão para isso é que você não pode rootmais se conectar ao MySQL com a conta. Esta regra foi alterada — e aplicada — no MySQL há alguns anos. Embora seja possível atualizar a configuração para permitir isso, é fortemente desencorajadomesmo para ambientes de desenvolvimento.

Em vez disso, se você precisar que o aplicativo tenha controle total sobre um banco de dados, você pode criar uma conta e conceder controle total a ela desta forma:

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

Caso queira que o aplicativo tenha ainda mais controle, você pode permitir-lhe acesso a tudo, inclusive a possibilidade de criar novas contas, como esta:

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

informação relacionada