NodeJS ECONNREFUSED?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Ist das dein Datenbankserver oder ist der von einem Hoster?

Genau wie bei MySQL kann man bei MariaDB auf Benutzerebene festlegen, ob der Datenbank-Nutzer nur von Localhost sowie bestimmten IP-Adresse zugreifen darf oder von allen IP-Adressen aus. Die meisten Hoster haben ihre Datenbanken aber so konfiguriert, dass nur intern zugegriffen werden darf aber nicht von außerhalb. Heißt: Du kannst dann vom Webspace aus zugreifen aber nicht von deinem eigenen Rechner aus – auch wenn der Datenbankserver grundsätzlich erreichbar ist.

Woher ich das weiß:Berufserfahrung – Entwickle Webseiten seit über 25 Jahren.

HitsLikeZocker 
Beitragsersteller
 07.12.2022, 00:01

Ist mein eigener Datenbankserver und der Zugriff ist für jede IP freigegeben... also kann das leider auch nicht das Problem sein :/

0
Babelfish  07.12.2022, 13:31
@HitsLikeZocker

Was bekommst du denn, wenn du dir deine User auflisten lässt:

SELECT USER, HOST FROM mysql.user

Für deinen genutzten User sollte es einen Host-Eintrag mit deiner Client-IP/-Host geben oder % für alle Hosts.

0
HitsLikeZocker 
Beitragsersteller
 07.12.2022, 16:01
@Babelfish

Hab das Problem gefunden... in der mariadb config file (/etc/mysql/mariadb.conf/50-server.cnf) war eingestellt das der Server nur auf lokale anfragen reagiert... hab es von 127.0.0.1 auf 0.0.0.0 umgestellt und jtz funktioniert es

1

Ein möglicher Grund für den angegebenen Fehler könnte sein, dass der MariaDB Server auf dem angegebenen Host nicht erreichbar ist. Ein weiterer möglicher Grund könnte sein, dass der angegebene Benutzername und/oder das angegebene Passwort nicht korrekt sind und daher keine Verbindung zur Datenbank hergestellt werden kann.

Um den Fehler zu beheben, empfehle ich, zunächst zu überprüfen, ob der MariaDB Server erreichbar ist und ob der angegebene Benutzername und das angegebene Passwort korrekt sind. Wenn beides der Fall ist, können Sie versuchen, den Code wie folgt zu ändern:

const con = mysql.createConnection({
    host: 'Domain.de',
    user: 'user',
    password: 'passwd',
    database: 'db',
    debug: true
});

app.get("/", (req, res) => {
    con.connect(function (err) {
        if (err) {
            console.error("Fehler beim Herstellen der Verbindung zur Datenbank: ", err);
            res.json({ success: false, error: err });
        } else {
            console.log("Verbindung zur Datenbank hergestellt");
            res.json({ success: true });
        }
    });
});

Dieser Code aktiviert den Debug-Modus für die Verbindung zur Datenbank und gibt detaillierte Fehlermeldungen aus, die Ihnen helfen können, den Fehler zu identifizieren und zu beheben. Bitte beachten Sie, dass der Debug-Modus nur für Entwicklungszwecke gedacht ist und in einer produktiven Umgebung deaktiviert werden sollte.


HitsLikeZocker 
Beitragsersteller
 06.12.2022, 23:33

Benutzername und Passwort sind korrekt, Datenbank ist erreichbar...

0
Aventus9999  06.12.2022, 23:38
@HitsLikeZocker

Der angegebene Fehlercode "ECONNREFUSED" bedeutet, dass der Versuch, eine Verbindung zum MariaDB Server auf dem angegebenen Host herzustellen, fehlgeschlagen ist, da der Server die Verbindung abgelehnt hat.
Also wenn der Port korrekt ist und der Server nicht überlastet ist weiß ich auch nicht weiter, tut mir leid.

0
HitsLikeZocker 
Beitragsersteller
 06.12.2022, 23:39
@Aventus9999

Schön wäre es wenn der Server einfach nur überlastet wäre, ist aber bei einer einzigen anfrage sehr unwahrscheinlich :D schade trotzdem Danke

0
Aventus9999  06.12.2022, 23:42
@HitsLikeZocker

Vielleicht ist der Server auch über einen anderen Port erreichbar?
Ein Beispiel für den Code, der die Verbindung zum MariaDB Server herstellen sollte, könnte wie folgt aussehen:

const con = mysql.createConnection({
    host: 'Domain.de',
    port: 3306, // optional, falls der MariaDB Server auf einem anderen Port als 3306 gestartet wurde
    user: 'user',
    password: 'passwd',
    database: 'db',
    debug: true
});

app.get("/", (req, res) => {
    con.connect(function (err) {
        if (err) {
            console.error("Fehler beim Herstellen der Verbindung zur Datenbank: ", err);
            res.json({ success: false, error: err });
        } else {
            console.log("Verbindung zur Datenbank hergestellt");
            res.json({ success: true });
        }
    });
});


0
HitsLikeZocker 
Beitragsersteller
 06.12.2022, 23:49
@Aventus9999

Ich wüsste nicht über welchen, ich habe am Port nichts geändert und standardmäßig ist das ja eigentlich 3306

0
HitsLikeZocker 
Beitragsersteller
 06.12.2022, 23:36

Benutzername und Passwort sind korrekt, Datenbank ist erreichbar, das Debug ändert nix an der ausgabe, Fehler:

{"errno":"ECONNREFUSED","code":"ECONNREFUSED","syscall":"connect","address":"*.*.*.*","port":3306,"fatal":true}
0