Aller au contenu principal

MySQL

MySQL est un SGBD relationnel open source (racheté par Oracle), historiquement l'un des plus utilisés pour les applications web (stack LAMP). Le démon mysqld est géré par systemd sous le nom de service mysql. Cette fiche couvre l'angle service — pour la syntaxe SQL, voir les cours SQL de ce site. Sur la plupart des distributions récentes, mysql a été remplacé par le fork MariaDB (voir 065-mariadb.md), qui garde la compatibilité protocolaire.

Installation

sudo apt install mysql-server # Debian/Ubuntu (ou mariadb-server selon la distro)
sudo dnf install mysql-server # RHEL/Fedora

sudo systemctl enable --now mysql
sudo mysql_secure_installation # assistant de durcissement post-install

Fichiers de configuration

FichierRôle
/etc/mysql/mysql.conf.d/mysqld.cnfConfiguration principale du démon
/etc/mysql/my.cnfPoint d'entrée, inclut les fichiers .cnf du dossier conf.d/
/var/lib/mysql/Répertoire de données

Commandes utiles

systemctl status mysql
mysql -u root -p # console interactive
mysqladmin -u root -p status
mysqldump -u root -p dbname > backup.sql
mysqladmin -u root -p processlist

Exemple de configuration

# mysqld.cnf
[mysqld]
bind-address = 127.0.0.1
max_connections = 150

Sécurisation

  • Exécuter systématiquement mysql_secure_installation après l'installation (retire les comptes anonymes, la base de test, restreint root à localhost).
  • bind-address = 127.0.0.1 sauf besoin réseau explicite, alors restreindre par pare-feu/pg_hba-équivalent (GRANT ... TO 'user'@'ip').
  • Comptes applicatifs dédiés avec privilèges minimaux (GRANT SELECT, INSERT ON db.* TO ...), jamais root en production.
  • Activer le chiffrement des connexions (require_secure_transport = ON) si accès réseau.
  • Sauvegardes régulières (mysqldump ou snapshots), testées en restauration.

Logs & dépannage

journalctl -u mysql
tail -f /var/log/mysql/error.log
mysql -u root -p -e "SHOW PROCESSLIST;"
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_connections';"

Voir aussi