SLBCloud
Intermédiaire9 min de lecture

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

sql
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

sql
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

bash
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

bash
# 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.dump

Les erreurs de connexion, décodées

MessageCe qu'il veut dire
Access denied for userMot 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 databaseLa base n'existe pas — vérifiez la casse du nom
Too many connectionsLe pool de l'application ne relâche pas ses connexions
FATAL: no pg_hba.conf entryPostgreSQL 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