Activer le mode Read Only sur un serveur MySQL
![]()
Voici quelques options utiles qui permettent d'empêcher l'écriture dans des bases de données MySQL, tout en gardant le droit de lecture.
L'activation de ces fonctionnalités peuvent être intéressantes notamment dans le cas d'un changement de serveur. On pourra alors exporter et réimporter toutes les données d'un serveur à un autre, en étant sûr de conserver l'intégrité des données. Quant aux clients, ils pourront seulement lire les données.
1. Méthode par modification d'une variable du serveur
Pour ce faire, connectez-vous au serveur avec l'utilisateur root :
mysql -h localhost -u root -p
et lancez la commande :
mysql> set GLOBAL read_only=true;
Les données contenues dans toutes les bases de données seront seulement accessibles en lecture. A noter que root garde quant à lui toujours le droit d'écriture.
Exemple d'insertion de données avec un simple utilisateur :
mysql> INSERT INTO toto VALUE('tata2');
ERROR 1290 (HY000): The MySQL server is running with the --read-only
option so it cannot execute this statement
Pour désactiver ce mode, on pourra ensuite lancer la commande suivante :
mysql> set GLOBAL read_only=false;
2. Méthode par positionnement de locks
Il existe aussi une seconde méthode qui consiste à poser des locks via la commande :
mysql> FLUSH TABLES WITH READ LOCK;
Cette dernière va alors fermer toutes les tables ouvertes, et verrouiller en lecture toutes les tables et bases.
A ce moment là, les requêtes qui voudront faire une écriture seront mises en file d'attente, jusqu'au débloquage par la commande :
mysql> UNLOCK TABLES;
Il sera possible de visionner la liste des requêtes en attentent en listant les processus comme ceci :
mysql> SHOW PROCESSLIST;
| 5 | root | localhost | test | Query | 160 | Waiting for release of readlock | INSERT INTO toto VALUE('tata2') |
Conclusion
La premiè méthode semble la plus adapter lors du transfert des données d'un serveur MySQL vers un autre, tandis que la seconde sera elle plutôt utilisée dans le cas de sauvegarde à froid.

Créé en 2005, Tux-planet est un site qui a pour ambition de regrouper des articles sur Linux et le monde des logiciels libres. 




