Connexion d'un serveur FiveM à MySQL
DOG&DEV · 25/01/2025
Connexion d'un serveur FiveM à MySQL
Les serveurs FiveM (et RedM) utilisent souvent MySQL ou MariaDB pour les frameworks (ESX, QBCore), les inventaires, les logs, etc. Les ressources courantes sont oxmysql (recommandé) et mysql-async. Ce guide décrit l’installation, la configuration dans server.cfg, les chaînes de connexion, le dépannage (ER_ACCESS_DENIED, ETIMEDOUT, = dans le mdp) et des bonnes pratiques.
Prérequis
- Serveur FiveM (Windows ou Linux) avec accès aux fichiers (fivem-windows-vps)
- MySQL ou MariaDB installé et accessible (mysql-windowsserver, ou MySQL sur Linux)
- Base et utilisateur créés (CREATE DATABASE, CREATE USER, GRANT)
MySQL : préparer la base
CREATE DATABASE fivem_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'fivem_user'@'%' IDENTIFIED BY 'MotDePasseFORT';
GRANT ALL ON fivem_db.* TO 'fivem_user'@'%';
FLUSH PRIVILEGES;
- bind-address : si MySQL est sur une autre machine,
bind-address=0.0.0.0(ou l’IP du serveur FiveM) et pare-feu (port 3306). Pour le même VPS :127.0.0.1oulocalhost.
oxmysql (recommandé)
Installation
- Télécharger oxmysql depuis GitHub ou votre gestionnaire de ressources.
- Placer dans resources/ et ajouter dans server.cfg :
ensure oxmysql
(Avant les ressources qui l’utilisent : frameworks, jobs, etc.)
Chaîne de connexion (set/convar)
Dans server.cfg :
set mysql_connection_string "mysql://fivem_user:MotDePasseFORT@localhost/fivem_db?charset=utf8mb4"
Format général :
mysql://USER:PASSWORD@HOST/DATABASE?options
- PASSWORD : si le mot de passe contient
=,@,#,%, il faut les encoder en URL :=→%3D@→%40#→%23%→%25
Ex. mot de passe P@ss=123 :
mysql://user:P%40ss%3D123@localhost/fivem_db
setr (convar partagée)
Pour que les ressources lisent la convar :
setr mysql:connection_string "mysql://fivem_user:MotDePasseFORT@127.0.0.1/fivem_db?charset=utf8mb4"
(Adapter set/setr et le nom de la convar selon la doc d’oxmysql et de votre framework.)
mysql-async (legacy)
Format type :
set mysql_connection_string "host=127.0.0.1;database=fivem_db;user=fivem_user;password=MotDePasseFORT;charset=utf8mb4"
- Même règle pour les caractères spéciaux dans le mot de passe (selon la lib : échappement ou encodage).
Migration mysql-async → oxmysql : remplacer la ressource et la chaîne, adapter les appels dans les scripts (API oxmysql différente). Prévoir une fenêtre de test.
server.cfg : ordre
# Connexion BDD avant tout
set mysql_connection_string "mysql://fivem_user:MotDePasseFORT@localhost/fivem_db?charset=utf8mb4"
ensure oxmysql
# Puis framework (ESX, QBCore) et le reste
ensure es_extended
# ...
Dépannage
| Erreur / symptôme | Cause possible | Correctif |
|---|---|---|
| ER_ACCESS_DENIED | Mauvais user, mot de passe, host | Vérifier CREATE USER, host '%' ou IP ; mot de passe sans typo ; encodage = → %3D etc. |
| ETIMEDOUT / Connection refused | MySQL arrêté, mauvais host/port, pare-feu | systemctl status mysql ; host 127.0.0.1 ou IP réelle ; port 3306 ouvert entre FiveM et MySQL |
| Unknown database | Base inexistante ou typo | SHOW DATABASES; ; recréer la base si besoin |
| MySQL has gone away | wait_timeout, max_allowed_packet |
Augmenter wait_timeout, max_allowed_packet dans my.cnf / my.ini |
= ou @ dans le mdp |
Interprétés par l’URL | Encoder : %3D, %40, etc. |
Santé et performances
- utf8mb4 : pour les emojis et tous les caractères.
- Index : sur les colonnes utilisées dans les WHERE / JOIN.
- Transactions : pour les opérations multiples cohérentes.
- wait_timeout / max_allowed_packet : adapter si timeouts ou requêtes volumineuses.
Bonnes pratiques
- Sauvegardes régulières (mysqldump, cron).
- Monitoring : requêtes lentes, nombre de connexions.
- Pour ESX / QBCore : esx-qbcore-setup. Pour le serveur : fivem-windows-vps. Pour MySQL sur Windows : mysql-windowsserver.
Ressources
Cet article s’inscrit dans notre série de guides hébergement et gaming. Pour un serveur sur-mesure, contact.