
Сначала я был программистом 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;