
Zuerst war ich Windows-Programmierer und bin vor kurzem auf Linux umgestiegen (Ubuntu 18.04Distro). Unter Windows funktionierte mein Code einwandfrei, aber unter Linux trat der Fehler auf.Error: connect ECONNREFUSED 127.0.0.1:3306
mein Verbindungscode:
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 mit Sudo-Berechtigungen gestartet: XAMPP-Server-Snap
Antwort1
Der Grund dafür ist, dass Sie mit diesem root
Konto keine Verbindung mehr zu MySQL herstellen können. Diese Regel wurde vor einigen Jahren in MySQL geändert und durchgesetzt. Es ist zwar möglich, die Konfiguration zu aktualisieren, um dies zuzulassen, es wird jedoch dringend davon abgeraten.auch für Entwicklungsumgebungen.
Wenn die Anwendung stattdessen die vollständige Kontrolle über eine Datenbank haben muss, können Sie ein Konto erstellen und dieser wie folgt die volle Kontrolle erteilen:
CREATE USER 'app_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'superSecretPassword!123';
GRANT ALL ON `database`.* TO 'app_name'@'localhost';
Wenn Sie der Anwendung noch mehr Kontrolle verleihen möchten, können Sie ihr den Zugriff auf alles gestatten, einschließlich der Möglichkeit, neue Konten zu erstellen. Gehen Sie dazu folgendermaßen vor:
GRANT ALL ON *.* TO 'app_name'@'localhost' WITH GRANT OPTION;