⚔️ Valheim 1.0 am 9. Sept: 25% Rabatt mit CodeSP25
FivemFivem·Serververwaltung

oxmysql Access denied auf deinem FiveM-Server beheben

ER_ACCESS_DENIED_ERROR bei FiveM ist fast nie ein Rechteproblem. Warum Sonderzeichen den oxmysql-Verbindungsstring zerstören und Kodieren alles schlimmer macht.

Noah
·
7 Minuten Lesezeit
·
7. September 2026
Inhaltsverzeichnis

Dein FiveM-Server startet, oxmysql wird geladen, und dann füllt sich die Konsole mit ER_ACCESS_DENIED_ERROR: Access denied for user. Host, Benutzername und Passwort hast du direkt aus dem Panel kopiert, also liegt der Schluss nahe, dass der Datenbankbenutzer sich von deinem Server aus nicht verbinden darf.

Das ist er fast nie. In der großen Mehrheit dieser Fälle stimmen die Zugangsdaten, und das Problem ist der Verbindungsstring. Dein Passwort enthält ein Zeichen, das im verwendeten Format nicht transportiert werden kann, also schickt oxmysql an MySQL ein anderes Passwort als das kopierte, und MySQL tut genau das Richtige. Es lehnt ab.

Warum das Passwort verstümmelt wird

oxmysql akzeptiert zwei verschiedene Formate in mysql_connection_string, und beide scheitern an jeweils anderen Zeichen.

Schlüssel-Wert-Form

set mysql_connection_string "user=s12_user;password=SECRET;host=1.2.3.4;port=3306;database=s12_economy;charset=utf8mb4"

oxmysql zerlegt das an ; und danach an = und behält die ersten beiden Teile. Ein ; oder ein = an beliebiger Stelle im Passwort schneidet es also stillschweigend ab. Keine Warnung, kein Parserfehler, nur ein kürzeres Passwort als das eingefügte.

URI-Form

set mysql_connection_string "mysql://s12_user:[email protected]:3306/s12_economy?charset=utf8mb4"

Diese Form wird mit einem regulären Ausdruck erfasst, und die Benutzerangaben werden an : getrennt. Der Treffer läuft gierig bis zum letzten @, ein @ im Passwort ist hier also völlig unproblematisch. Ein :, /, ? oder # ist es nicht, denn jedes davon beendet einen eigenen Teil der URI.

Ein " zerstört beide Formen, denn der gesamte Wert steht in einer zitierten Convar, und das Anführungszeichen schließt sie zu früh.

Es gibt also kein Format, das jedes Passwort übersteht. Es gibt ein Format, das dein Passwort übersteht, und die falsche Wahl ist genau das, was Access denied erzeugt.

Kodiere dein Passwort nicht prozentual

Das ist der am häufigsten wiederholte schlechte Rat zu diesem Thema, und er macht es schlimmer.

Der URI-Parser von oxmysql führt keine Prozent-Dekodierung durch. Lautet dein Passwort p@ss und schreibst du es hilfsbereit als p%40ss, schickt oxmysql die wörtlichen Zeichen p%40ss an MySQL, was nicht dein Passwort ist, und du bekommst Access denied aus einem völlig neuen Grund. In der URI-Form gehört das Passwort roh hinein, genau so, wie das Panel es anzeigt.

Prozentkodierung ist bei Datenbank-URIs in vielerlei anderer Software richtig. Hier ist sie falsch.

Die Lösung: kopiere die Zeile, die das Panel baut

Du musst nicht selbst herausfinden, welches Format dein Passwort braucht. Öffne deinen Server im Panel, gehe auf den Reiter Datenbanken und sieh dir unter deiner Datenbank die Karte oxmysql-Verbindungsstring an.

Diese Karte enthält die vollständige Zeile set mysql_connection_string "...", bereits zusammengesetzt aus Host, Port, Benutzername, Datenbankname und Passwort, und zwar in derjenigen der beiden Formen, die genau dein Passwort tragen kann. Nutze die Kopierschaltfläche statt den Text von Hand zu markieren, damit das echte Passwort kopiert wird, auch während es auf dem Bildschirm verdeckt ist.

Zeigt die Karte statt eines Strings eine Warnung und eine Schaltfläche Neues Passwort generieren, enthält dein Passwort eine Kombination, die keine der beiden Formen ausdrücken kann, etwa ein " oder sowohl ein = als auch ein :. Drücke die Schaltfläche. Du bekommst in einer Sekunde ein neues, funktionierendes Passwort, und die Karte zeigt danach eine gültige Zeile.

Wohin die Zeile gehört

Füge sie weit oben in server.cfg ein.

Die eine Regel, auf die es ankommt, ist die Reihenfolge. set mysql_connection_string muss vor ensure oxmysql stehen. oxmysql liest die Convar beim Start, ein weiter unten stehender Verbindungsstring wird also zu spät gelesen, und die Ressource startet ohne alles.

Verwaltet txAdmin deinen Server, trage sie in den txAdmin-Einstellungen ein, statt server.cfg von Hand zu bearbeiten. txAdmin erzeugt Teile der Konfiguration neu, und eine Änderung in der Datei kann überschrieben werden.

Starte den Server nach der Änderung neu. Die Ressource allein neu zu laden genügt nicht, denn die Convar wird beim Ressourcenstart gelesen.

Prüfen, ob es geklappt hat

Öffne den Reiter Konsole und starte neu. Ein gesundes oxmysql schreibt eine Zeile, die die Verbindung zu deiner Datenbank bestätigt und die MySQL-Version nennt. Stimmen die Zugangsdaten nicht, kommt die Access-denied-Zeile sofort wieder, ein bis zwei Sekunden nach dem Start der Ressource.

Eine Verbindung, die viele Sekunden hängt und dann scheitert, ist ein anderes Problem. Dann sind Host oder Port nicht erreichbar, und es liegt nicht am Passwort.

Fehlerbehebung

Access denied, und mein Passwort enthält ; oder =. Du bist in der Schlüssel-Wert-Form, und dein Passwort wird abgeschnitten. Wechsle zur URI-Form oder lass ein neues Passwort erzeugen.

Access denied, und mein Passwort enthält :, /, ? oder #. Du bist in der URI-Form, und das Passwort wird an diesem Zeichen abgeschnitten. Wechsle zur Schlüssel-Wert-Form oder lass ein neues Passwort erzeugen.

Access denied, und mein Passwort enthält @. In der URI-Form ist das in Ordnung, das @ ist nicht dein Problem. Prüfe stattdessen Benutzername und Datenbankname. Hast du das @ als %40 kodiert, mache das rückgängig.

Access denied für einen leeren Benutzernamen. Die Zeile ist eher fehlerhaft aufgebaut als inhaltlich falsch. Meist steckt ein verirrtes Anführungszeichen oder ein fehlendes set dahinter. Kopiere die ganze Zeile erneut aus dem Panel.

Unknown database. Datenbankname und Benutzername sehen einander zum Verwechseln ähnlich, weil beide dasselbe erzeugte Präfix tragen. Da vertauscht man leicht das eine mit dem anderen. Im Panel ist der Benutzername der Wert unter Benutzername, und der Datenbankname ist die Überschrift der Zeile.

Connection timed out oder connect ECONNREFUSED. Kein Problem mit den Zugangsdaten. Prüfe, ob du den vollständigen Host aus dem Panel samt Port nach dem Doppelpunkt verwendet und ihn nicht durch localhost oder 127.0.0.1 ersetzt hast. Deine Datenbank liegt nicht auf derselben Maschine wie dein Gameserver, diese Adressen zeigen also ganz woandershin.

Gestern lief es, heute nicht mehr. Jemand hat bei der Datenbank Neues Passwort gedrückt, du selbst oder eine andere Person mit Panelzugang. Ein neues Passwort macht das alte sofort ungültig. Kopiere die neue Zeile.

oxmysql meldet, es wurde kein Verbindungsstring gefunden. Die Convar steht in server.cfg unterhalb von ensure oxmysql, oder txAdmin hat deine Änderung überschrieben.

Häufige Fragen

Ist der Datenbankbenutzer auf bestimmte Hosts beschränkt? Nein. Über das Panel angelegte Datenbanken nehmen Verbindungen von jedem Host an, ein durch den Host blockierter Datenbankbenutzer ist also nicht die Ursache deines Access-denied-Fehlers. Das gehört klar gesagt, denn es ist das Erste, was fast alle vermuten.

Welches Format soll ich verwenden? Das, welches das Panel dir gibt. Es wählt standardmäßig die Schlüssel-Wert-Form und wechselt zur URI-Form, wenn dein Passwort es verlangt.

Kann ich die Sonderzeichen einfach aus meinem Passwort entfernen? Im Ergebnis ja. Mit Neues Passwort bekommst du ein frisches, und landet es auf etwas, das beide Formen tragen können, zeigt das Panel die einfachere Form. Ein eigenes Passwort kannst du nicht festlegen, ein neues erzeugen zu lassen ist also der Weg zu einem freundlicheren.

Gilt das auch für ESX und QBCore? Ja. Beide bauen auf oxmysql auf und lesen dieselbe Convar. Dieselbe Zeile funktioniert für beide.

Brauche ich charset=utf8mb4? Nötig ist es nicht, aber lass es drin. oxmysql nutzt ohnehin utf8mb4 als Standard, und gerade das ausdrückliche Angeben verhindert, dass Buchstaben mit Akzent in Spielernamen auf Servern mit älterem MySQL-Standard falsch gespeichert werden.

Kann ich den Verbindungsstring stattdessen in eine Ressourcenkonfiguration schreiben? Lieber nicht. Frameworks lesen ihn aus der Convar, und eine zweite Kopie in einer Ressourcendatei ist eine weitere Stelle, die beim Passwortwechsel mitgepflegt werden muss.

Soll ich meinen Verbindungsstring teilen, wenn ich um Hilfe bitte? Nein. Er enthält das vollständige Passwort. Teile die Fehlerzeile aus der Konsole und nenne das verwendete Format, niemals den String selbst.


Bekommst du weiterhin Access denied, obwohl du die Zeile aus dem Panel kopiert hast? Wende dich mit deinem Servernamen und der genauen Konsolenausgabe ohne Passwort an den Support, dann prüfen wir die Datenbank von unserer Seite. Noch kein Server? Sieh dir unsere Tarife für FiveM Server Hosting an.

Fivem

Bereit für Fivem?

Bring deinen eigenen Server in wenigen Minuten online.