Přejít na obsah
Aktuální kupón:sleva 10 %Uplatnit v objednávce

Databáze pro FiveM: oxmysql, připojení a import SQL

Vytvoříte databázi v zákaznické zóně, nainstalujete oxmysql, sestavíte správný connection string, naimportujete SQL v HeidiSQL a databázi zazálohujete.

  • pokročilý
  • ~20 min
  • Aktualizováno 1. 10. 2026

Frameworky a většina skriptů ukládají postavy, peníze, auta a inventáře do databáze. FiveM k ní přistupuje přes resource oxmysql. Ukážeme, jak databázi vytvořit, správně připojit, naimportovat do ní SQL a zálohovat.

Co budete potřebovat

  • FiveM server u StormHostu (nebo vlastní FiveM server s databází MariaDB)
  • Oprávnění Databáze (vlastník ho má vždy)
  • Program HeidiSQL (otevře se v novém okně) ve Windows (pro import a zálohu)
  • Asi 20 minut

Proč oxmysql#

oxmysql je knihovna, přes kterou ostatní resources posílají dotazy do databáze MySQL nebo MariaDB. Nahrazuje starší mysql-async a ghmattimysql a umí jejich zápis, takže starší skripty fungují dál. Recepty txAdminu pro ESX, QBCore a Qbox ji instalují samy.

Autoři oxmysql doporučují databázi MariaDB. Většina skriptů FiveM vznikla pro MySQL 5.7 a s MySQL 8 mívá potíže (víc rezervovaných slov, výchozí hodnoty u sloupců JSON).

Vytvoření databáze#

  1. V zákaznické zóně otevřete Moje služby, klikněte na server a přejděte na záložku Databáze.
  2. Do pole Název databáze napište název, například fivem. Povolená jsou písmena, číslice a podtržítko.
  3. Do pole Povolený přístup z napište % (výchozí hodnota).
  4. Klikněte na Vytvořit databázi.

U databáze uvidíte tyto údaje:

ÚdajCo znamenáKam ho použijete
Název databázeSkutečný název databáze. Může se lišit od toho, co jste napsali, proto ho vždy kopírujte ze seznamu.Connection string, HeidiSQL, txAdmin (Database Name).
UživatelDatabázový uživatel s právy jen k této databázi.Connection string, HeidiSQL.
ServerAdresa databázového serveru ve tvaru IP:port, například 203.0.113.20:3306.Část před dvojtečkou je host, za dvojtečkou port.
HesloHeslo uživatele. Zobrazíte ho ikonou oka, ikonou vedle zkopírujete.Connection string, HeidiSQL.
Povolený přístup zOdkud se smí k databázi připojit. % = odkudkoli, jinak jedna IP adresa.% potřebujete, když se chcete připojit i z počítače přes HeidiSQL.
  • Nové heslo vygeneruje nové heslo. Staré přestane fungovat, takže ho musíte změnit i v server.cfg.
  • Počet databází je omezený podle balíčku, stav vidíte jako Využito X z Y.
  • Když jsou Server, Uživatel nebo Povolený přístup z zakryté šrafovaným pruhem, je zapnutý režim streamu. Klikněte nahoře na Zobrazit údaje, nebo hodnotu zkopírujte ikonou vedle ní.

Smazat maže i data

Tlačítko Smazat databázi nevratně odstraní i se všemi postavami a penězi hráčů. Zálohy v záložce Zálohy obsahují jen soubory serveru, databázi ne. Před smazáním si databázi vyexportujte (část „Záloha databáze“).

Instalace oxmysql#

Pokud jste server nasadili receptem txAdminu pro framework, oxmysql už máte a tuto část přeskočte.

  1. Stáhněte nejnovější vydání z GitHubu oxmysql (otevře se v novém okně) (soubor oxmysql.zip, ne zdrojový kód).
  2. Archiv rozbalte. Vznikne složka oxmysql se souborem fxmanifest.lua a podsložkami dist, lib, web a logger.
  3. Nahrajte celou složku oxmysql do resources na serveru (podsložky vytvořte tlačítkem Nová složka, postup v návodu FiveM resources).

Connection string#

oxmysql čte přihlašovací údaje z proměnné mysql_connection_string v server.cfg. Jde ji zapsat dvěma způsoby:

server.cfgcfg
set mysql_connection_string "mysql://<UZIVATEL>:<HESLO>@<IP_DATABAZE>:<PORT>/<NAZEV_DATABAZE>"
server.cfgcfg
set mysql_connection_string "user=<UZIVATEL>;password=<HESLO>;host=<IP_DATABAZE>;port=<PORT>;database=<NAZEV_DATABAZE>"

Použijte jen jeden z řádků. Pro heslo ze záložky Databáze je správná volba první (URI) tvar, protože si poradí se všemi znaky, které se v něm objevují (část „Speciální znaky v hesle“). Za hodnoty ve špičatých závorkách dosaďte údaje ze záložky Databáze, bez závorek:

ČástOdkud ji vzít
<UZIVATEL>Uživatel
<HESLO>Heslo
<IP_DATABAZE>Server, část před dvojtečkou (například 203.0.113.20)
<PORT>Server, část za dvojtečkou (obvykle 3306)
<NAZEV_DATABAZE>Název databáze, přesně jak je v seznamu
  • set – proměnná zůstane jen na serveru. Nikdy nepoužívejte setr ani sets, heslo by se poslalo hráčům nebo zveřejnilo.
  • mysql:// – označuje první (URI) tvar. Druhý tvar jsou dvojice klíč=hodnota oddělené středníkem.

Speciální znaky v hesle#

oxmysql řetězec nijak nedekóduje, takže zápis typu %40 místo @ nefunguje. Heslo vložte přesně tak, jak je. Autoři oxmysql obecně radí vyhnout se v hesle znakům ; , / ? : @ & = + $ #, případně přepnout na druhý tvar zápisu. Podle toho, jak oxmysql řetězec skutečně dělí, platí:

Heslo obsahujePoužijte
jen písmena, číslice a znaky @ = + ! . ^ & $ , ;URI tvar (mysql://…). Tyto znaky mu nevadí. Středníkový tvar se ale na = a ; rozdělí.
: / ? nebo #Středníkový tvar (user=…;password=…). URI tvar se na těchto znacích rozdělí.
"Ani jeden. Uvozovka ukončí hodnotu v server.cfg.
: / ? # a zároveň = nebo ;Klikněte v záložce Databáze na Nové heslo a použijte nové heslo.

Hesla, která vytváří záložka Databáze, obsahují kromě písmen a číslic jen znaky, se kterými si URI tvar poradí (například @, =, +, !, .). Proto u nich používejte URI tvar a heslo neupravujte.

Kam řádek dát#

Řádek s set mysql_connection_string musí být v server.cfg před řádkem ensure oxmysql a oxmysql musí startovat před všemi skripty, které databázi používají:

server.cfgcfg
set mysql_connection_string "mysql://<UZIVATEL>:<HESLO>@<IP_DATABAZE>:3306/<NAZEV_DATABAZE>"

ensure oxmysql
ensure ox_lib
ensure es_extended

Import SQL v HeidiSQL#

Skripty často obsahují soubor .sql, který vytvoří potřebné tabulky. Import přes HeidiSQL:

  1. Stáhněte a nainstalujte HeidiSQL (otevře se v novém okně).

  2. Spusťte ho. V okně Session manager klikněte vlevo dole na New.

  3. Vyplňte záložku Settings:

    PoleCo zadat
    Network typeMariaDB or MySQL (TCP/IP)
    Hostname / IPIP adresa z pole Server (část před dvojtečkou)
    UserUživatel ze záložky Databáze
    PasswordHeslo ze záložky Databáze
    PortPort z pole Server (část za dvojtečkou), obvykle 3306
    DatabasesNázev databáze (volitelné, HeidiSQL pak ukáže jen ji)
  4. Klikněte na Open. Vlevo uvidíte svou databázi.

  5. Klikněte na databázi, aby byla vybraná (aktivní).

  6. V menu zvolte File › Run SQL file… a vyberte soubor .sql.

  7. U volby Encoding zvolte UTF-8 a potvrďte.

    HeidiSQL příkazy rovnou provede. Po dokončení stiskněte F5 a v databázi uvidíte nové tabulky.

Když se HeidiSQL nepřipojí, zkontrolujte, že Povolený přístup z je % (nebo vaše veřejná IP adresa).

Ladění dotazů#

NastaveníCo děláDoporučená hodnota
set mysql_slow_query_warning 300Varuje v konzoli, když dotaz trvá déle než zadaný počet milisekund. Výchozí hodnota je 200.Řádek nepřidávejte, výchozí hodnota stačí. Vyšší číslo zadejte jen tehdy, když vás varování zahlcují. Pomalé dotazy při startu serveru nevadí.
set mysql_debug trueVypíše do konzole všechny dotazy. Jde omezit jen na vybrané resources (zápis je v dokumentaci oxmysql).Jen při hledání chyby, pak vypnout.
set mysql_ui trueZapne ve hře příkaz /mysql s přehledem dotazů a jejich časů (vyžaduje oprávnění command.mysql).Jen při vývoji nebo s malým počtem hráčů.

Záloha databáze#

Záložka Zálohy zálohuje jen soubory serveru. Databázi zálohujte zvlášť:

  1. V HeidiSQL klikněte pravým tlačítkem na databázi a zvolte Export database as SQL.
  2. Zaškrtněte tabulky (všechny), u Data nechte Insert.
  3. U Output zvolte Single .sql file, vyberte soubor a klikněte na Export.

Zálohu dělejte před aktualizací frameworku, před instalací velkého skriptu a pravidelně (například jednou týdně). Obnova je import souboru postupem „Import SQL v HeidiSQL“.

Ověření#

Po restartu serveru najdete v konzoli řádek:

Výstuptext
[<VERZE_DATABAZE>] Database server connection established!

V hranatých závorkách je verze databázového serveru (například s označením MariaDB). Pak už frameworky hlásí načtení bez chyb databáze.

Když něco nefunguje#

Unable to establish a connection to the database (ER_ACCESS_DENIED_ERROR)!#

Špatný uživatel nebo heslo. Zkopírujte je znovu ze záložky Databáze. Zkontrolujte, že heslo nemáte ve středníkovém tvaru se znakem = (použijte URI tvar, tabulka výše), a že jste ho nijak nekódovali (%40 místo @). Pomůže i Nové heslo.

Unable to establish a connection to the database (ECONNREFUSED)! nebo (ETIMEDOUT)#

Špatná adresa nebo port. Do connection stringu patří IP adresa a port z pole Server, ne localhost.

Unable to establish a connection to the database (ER_BAD_DB_ERROR)!#

Databáze s tímto názvem neexistuje. Opište Název databáze přesně ze seznamu.

mysql_connection_string structure was invalid#

Řetězec v URI tvaru nejde rozebrat. Zkontrolujte, že začíná mysql:// a obsahuje @, a že heslo nemá znaky /, ? nebo #.

Table '….users' doesn't exist (nebo jiná tabulka)#

Chybí tabulky skriptu nebo frameworku. Naimportujte jeho soubor .sql.

Can't create table … (Foreign Key Constraint is incorrectly formed)#

Nová tabulka má jinou znakovou sadu (collation) než stávající. Na konec příkazů CREATE TABLE v souboru .sql doplňte DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci a import zopakujte.

Po obnově zálohy chybí data hráčů#

Zálohy v záložce Zálohy obsahují jen soubory serveru, databázi ne. Obnova zálohy proto databázi nevrátí. Data z databáze obnovíte z vlastního exportu .sql.

Shrnutí

  • Databázi vytvoříte v záložce Databáze. Host a port jsou v poli Server, název kopírujte ze seznamu.
  • set mysql_connection_string "…" patří do server.cfg před ensure oxmysql, vždy přes set.
  • Heslo ze záložky Databáze patří do URI tvaru (mysql://…) přesně tak, jak je. Středníkový tvar jen pro hesla se znaky : / ? #. URL kódování nefunguje.
  • SQL importujete v HeidiSQL přes File › Run SQL file…, databázi zálohujete přes Export database as SQL.

Hledání v návodech