Mysql:tuning
| Fiche express | |
|---|---|
| Type | Configuration et administration MySQL |
| Voir aussi | Mysql:GRANT · Mysql:maintenance |
Mysql:tuning regroupe quelques réglages de configuration MySQL/MariaDB (fichier my.cnf) et deux procédures d'administration courantes.
Fichier de configuration
vi /etc/mysql/my.cnf
Emplacement variable selon la distribution : /etc/my.cnf, /etc/mysql/my.cnf, /etc/mysql/mariadb.conf.d/50-server.cnf... (à vérifier selon le système).
Restreindre/ouvrir l'accès réseau
Par défaut sur beaucoup de distributions, le serveur n'écoute que sur localhost :
[mysqld] bind-address = 127.0.0.1
Pour autoriser les connexions depuis d'autres machines, commenter ou retirer cette ligne, puis restreindre l'accès via le pare-feu et des comptes limités à des IP précises (voir Mysql:GRANT) — à ne faire que si c'est réellement nécessaire.
Journaliser toutes les requêtes
[mysqld] general_log = 1 general_log_file = /var/log/mysqld.log
Utile en diagnostic ponctuel, mais génère un volume de logs important : à désactiver une fois le diagnostic terminé.
Options de session
Désactiver/réactiver la vérification des contraintes de clés étrangères pour la session courante :
SET foreign_key_checks = 0; SET foreign_key_checks = 1;
Procédures
Renommer une base de données
MySQL ne propose pas de RENAME DATABASE direct. Le déplacement manuel des fichiers ne fonctionne qu'avec le moteur MyISAM (un fichier par table) et implique un arrêt du serveur (à vérifier selon version/moteur) :
service mysqld stop mv /var/lib/mysql/ancienne_base /var/lib/mysql/nouvelle_base service mysqld start
Sur les serveurs mutualisés type Plesk, les droits des utilisateurs associés à la base doivent être recréés après ce type d'opération manuelle.
Pour une base InnoDB, cette méthode par déplacement de fichiers ne s'applique pas directement ; préférer :
CREATE DATABASE nouvelle_base; RENAME TABLE ancienne_base.table1 TO nouvelle_base.table1, ancienne_base.table2 TO nouvelle_base.table2; DROP DATABASE ancienne_base;
(à adapter selon le nombre de tables — il existe aussi des outils dédiés comme mysqldump suivi d'un réimport, voir Mysqldump)
Voir aussi
- Mysql:GRANT — restreindre l'accès réseau par compte
- Mysql:maintenance — FLUSH et autres commandes serveur
- Mysql — panorama général MySQL/MariaDB