MySQL et PostgreSQL au quotidien
Créer une base et son utilisateur, se connecter depuis l'extérieur sans tout exposer, sauvegarder, et régler les erreurs de connexion.
Créer une base et son utilisateur
MySQL / MariaDB
CREATE DATABASE monappli CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'monappli'@'localhost' IDENTIFIED BY 'mot-de-passe-long';
GRANT ALL PRIVILEGES ON monappli.* TO 'monappli'@'localhost';
FLUSH PRIVILEGES;PostgreSQL
CREATE DATABASE monappli;
CREATE USER monappli WITH ENCRYPTED PASSWORD 'mot-de-passe-long';
GRANT ALL PRIVILEGES ON DATABASE monappli TO monappli;
\c monappli
GRANT ALL ON SCHEMA public TO monappli;Un utilisateur par application
Résistez à la tentation de tout faire tourner sous root ou postgres. Le jour où une application est compromise, la limite de ses droits est ce qui empêche l'attaquant de lire les bases des autres.
Se connecter depuis l'extérieur, prudemment
Par défaut, la base n'écoute que sur la machine — et c'est très bien. Une base de données ouverte sur Internet est trouvée par les balayeurs en quelques heures. Si vous devez y accéder depuis votre poste, le tunnel SSH est la bonne réponse : rien à ouvrir, rien à exposer.
Depuis votre poste : la base distante apparaît en local sur le port 3307
ssh -L 3307:127.0.0.1:3306 [email protected]Votre client se connecte ensuite sur 127.0.0.1:3307. Rien n'a été ouvert dans le pare-feu, et le trafic est chiffré par SSH.
Si vous devez vraiment ouvrir le port — une application sur une autre machine, par exemple — n'autorisez qu'une adresse source précise, et jamais 0.0.0.0.
Sauvegarder et restaurer
# MySQL / MariaDB
mysqldump --single-transaction --quick monappli | gzip > monappli-$(date +%F).sql.gz
gunzip < monappli-2026-08-24.sql.gz | mysql monappli
# PostgreSQL
pg_dump -Fc monappli > monappli-$(date +%F).dump
pg_restore -d monappli --clean monappli-2026-08-24.dumpLes erreurs de connexion, décodées
| Message | Ce qu'il veut dire |
|---|---|
| Access denied for user | Mot de passe faux, ou l'utilisateur n'existe pas pour cet hôte |
| Can't connect ... (111) | Le service est arrêté, ou n'écoute pas sur cette adresse |
| Unknown database | La base n'existe pas — vérifiez la casse du nom |
| Too many connections | Le pool de l'application ne relâche pas ses connexions |
| FATAL: no pg_hba.conf entry | PostgreSQL refuse cette origine : il faut l'ajouter à pg_hba.conf |
'monappli'@'localhost' n'est pas 'monappli'@'%'
En MySQL, l'utilisateur et l'hôte forment un couple. Un compte créé pour localhost refuse une connexion venant de 127.0.0.1 par le réseau, et inversement. C'est la source d'un « Access denied » sur deux, avec le bon mot de passe.
Bloqué malgré tout ? Ouvrez un ticket : on répond en français, et on regarde votre machine si besoin.
Ouvrir un ticket