エラー: connect ECONNREFUSED 127.0.0.1:3306

エラー: connect 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',
});

server.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;

関連情報