⚔️ Valheim 1.0 9 sept: 25% rabatt med kodenSP25
FivemFivem·Serverhantering

Så fixar du oxmysql Access denied på FiveM

ER_ACCESS_DENIED_ERROR på FiveM handlar nästan aldrig om behörigheter. Varför specialtecken förstör oxmysql-anslutningssträngen, och varför kodning gör det värre.

Noah
·
6 min lästid
·
7 september 2026
Innehållsförteckning

Din FiveM-server startar, oxmysql laddas, och sedan fylls konsolen med ER_ACCESS_DENIED_ERROR: Access denied for user. Du har kopierat värd, användarnamn och lösenord direkt från panelen, så den självklara slutsatsen är att databasanvändaren inte får ansluta från din server.

Det är den nästan aldrig. I de allra flesta av dessa ärenden stämmer uppgifterna, och det är anslutningssträngen som är problemet. Ditt lösenord innehåller ett tecken som formatet du använde inte kan bära, så oxmysql skickar ett annat lösenord till MySQL än det du kopierade, och MySQL gör precis rätt. Den nekar.

Varför lösenordet blir förvanskat

oxmysql accepterar två olika format i mysql_connection_string, och de går sönder på var sin uppsättning tecken.

Nyckel och värde

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

oxmysql delar detta på ; och sedan på = och behåller de två första delarna. Ett ; eller ett = var som helst i lösenordet klipper alltså av det tyst. Ingen varning, inget tolkningsfel, bara ett kortare lösenord än det du klistrade in.

URI-format

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

Detta format matchas med ett reguljärt uttryck, och användaruppgifterna delas på :. Matchningen löper glupskt fram till det sista @, vilket betyder att ett @ i lösenordet är helt ofarligt här. Ett :, /, ? eller # är det inte, eftersom vart och ett av dem avslutar sin egen del av URI:n.

Ett " förstör båda formaten, eftersom hela värdet ligger inuti en citerad convar och citattecknet stänger den för tidigt.

Det finns alltså inget format som överlever varje lösenord. Det finns ett format som överlever ditt lösenord, och att välja fel är just det som ger access denied.

Procentkoda inte ditt lösenord

Det är det mest upprepade dåliga rådet i frågan, och det gör saken värre.

oxmysqls URI-tolk gör ingen procentavkodning. Är ditt lösenord p@ss och skriver du det hjälpsamt som p%40ss, skickar oxmysql de bokstavliga tecknen p%40ss till MySQL, vilket inte är ditt lösenord, och du får access denied av ett helt nytt skäl. I URI-formatet ska lösenordet in rått, precis som panelen visar det.

Procentkodning är rätt för databas-URI:er i massor av annan programvara. Här är det fel.

Lösningen: kopiera raden panelen bygger

Du behöver inte lista ut vilket format ditt lösenord kräver. Öppna din server i panelen, gå till fliken Databaser och titta på kortet oxmysql-anslutningssträng under din databas.

Kortet innehåller hela raden set mysql_connection_string "...", redan hopsatt av din värd, port, användarnamn, databasnamn och lösenord, i det av de två formaten som kan bära just ditt lösenord. Använd kopieringsknappen i stället för att markera texten för hand, så att det riktiga lösenordet kopieras även medan det är dolt på skärmen.

Visar kortet en varning och en knapp med Generera nytt lösenord i stället för en sträng, innehåller ditt lösenord en kombination som inget av formaten kan uttrycka, till exempel ett ", eller både ett = och ett :. Tryck på knappen. Du får ett nytt fungerande lösenord på en sekund, och kortet visar sedan en giltig rad.

Var raden ska in

Klistra in den i server.cfg, högt upp i filen.

Den enda regel som spelar roll är ordningen. set mysql_connection_string måste stå före ensure oxmysql. oxmysql läser convar:en när den startar, så en anslutningssträng längre ner i filen läses för sent och resursen startar utan någonting.

Om txAdmin sköter din server lägger du in den i txAdmin-inställningarna i stället för att redigera server.cfg för hand. txAdmin genererar om delar av konfigurationen, och en ändring i filen kan skrivas över.

Starta om servern efter ändringen. Att bara ladda om resursen räcker inte, eftersom convar:en läses när resursen startar.

Bekräfta att det fungerade

Öppna fliken Konsol och starta om. Ett friskt oxmysql skriver en rad som bekräftar anslutningen till din databas och anger MySQL-versionen. Är uppgifterna fel får du access denied-raden igen direkt, inom en sekund eller två efter att resursen startat.

En anslutning som hänger i många sekunder och sedan misslyckas är ett annat problem. Då är värden eller porten inte nåbar, och det handlar inte om lösenordet.

Felsökning

Access denied, och mitt lösenord innehåller ; eller =. Du använder nyckel och värde, och lösenordet klipps av. Byt till URI-formatet, eller byt lösenord.

Access denied, och mitt lösenord innehåller :, /, ? eller #. Du använder URI-formatet, och lösenordet klipps vid det tecknet. Byt till nyckel och värde, eller byt lösenord.

Access denied, och mitt lösenord innehåller @. I URI-formatet är det helt i sin ordning, och @ är inte ditt problem. Titta på användarnamnet och databasnamnet i stället. Har du procentkodat ditt @ som %40, ta bort det.

Access denied för ett tomt användarnamn. Raden är felformad snarare än felaktig. Ett vilset citattecken eller ett saknat set brukar ligga bakom. Kopiera hela raden från panelen igen.

Unknown database. Databasnamnet och användarnamnet är förvillande lika, eftersom båda bär samma genererade prefix. Det är lätt att klistra in det ena där det andra hör hemma. I panelen är användarnamnet värdet under Användarnamn, och databasnamnet är rubriken på raden.

Connection timed out eller connect ECONNREFUSED. Handlar inte om uppgifterna. Kontrollera att du använde hela värden från panelen inklusive porten efter kolonet, och att du inte bytt ut den mot localhost eller 127.0.0.1. Din databas ligger inte på samma maskin som din spelserver, så de adresserna pekar någon helt annanstans.

Det fungerade i går och slutade i dag. Någon har tryckt Nytt lösenord på databasen, du själv eller någon annan med tillgång till panelen. Ett nytt lösenord ogiltigförklarar det gamla omedelbart. Kopiera den nya raden.

oxmysql säger att ingen anslutningssträng hittades. Convar:en står under ensure oxmysql i server.cfg, eller så har txAdmin skrivit över din ändring.

Vanliga frågor

Är databasanvändaren begränsad till vissa värdar? Nej. Databaser som skapats från panelen tar emot anslutningar från vilken värd som helst, så en databasanvändare blockerad på värd är inte orsaken till ditt access denied-fel. Det är värt att säga rakt ut, för det är det första nästan alla misstänker.

Vilket format ska jag använda? Det som panelen ger dig. Den väljer nyckel och värde som standard och byter till URI-formatet när ditt lösenord kräver det.

Kan jag bara ta bort specialtecknen ur mitt lösenord? I praktiken ja. Trycker du Nytt lösenord får du ett färskt, och landar det på något båda formaten kan bära visar panelen det enklare formatet. Du kan inte välja lösenord själv, så ett nytt lösenord är vägen till ett vänligare.

Gäller det här ESX och QBCore? Ja. Båda är byggda på oxmysql och läser samma convar. Samma rad fungerar för båda.

Behöver jag charset=utf8mb4? Det krävs inte, men behåll det. oxmysql använder utf8mb4 som standard ändå, och det är just att skriva ut det som hindrar att bokstäver med accent i spelarnamn sparas fel på servrar vars MySQL-standard är äldre.

Kan jag lägga anslutningssträngen i en resurskonfiguration i stället? Låt bli. Ramverk läser den från convar:en, och en kopia till i en resursfil är ännu ett ställe att hålla i takt när lösenordet byts.

Ska jag dela min anslutningssträng när jag ber om hjälp? Nej. Den innehåller lösenordet i sin helhet. Dela felraden från konsolen och berätta vilket format du använde, aldrig själva strängen.


Får du fortfarande access denied efter att ha kopierat raden från panelen? Kontakta supporten med ditt servernamn och den exakta konsolutskriften utan lösenordet, så kollar vi databasen från vår sida. Har du ingen server än? Se våra planer för FiveM serverhosting.

Fivem

Redo att spela Fivem?

Få igång din egen server på några minuter.