오류: ECONNREFUSED 127.0.0.1:3306 연결

오류: ECONNREFUSED 127.0.0.1:3306 연결

첫째로 저는 Windows 프로그래머였고 최근에 Linux로 전환했습니다(우분투 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;

관련 정보