Importer une base de donnée sans passer par phpmyadmin

De HomeServer.DIY.
Aller à : Navigation, rechercher

Le blog et le forum ont rencontré quelques soucis ces derniers jours. Ceci vient du fait de l’accumulation de problèmes. D’abord une panne matérielle, empêchant un disque dur d’être reconnu par le serveur, et ensuite une corruption de nos sauvegardes récentes. Ces sauvegardes devant nous permettre de déplacer l’ensemble du site vers un autre des mes server@home de façon transparente, il nous a fallut trouver le moyen de récupérer nos bases de données depuis le disque dur de l’ancien serveur pour les importer vers le nouveau. Ceci sans l’aide de phpmyadmin pour des raisons que j’évoquerai après.


Déplacement des fichiers

Phpmyadmin est un outils très pratique pour gérer les bases de données. C’est une interface web sur laquelle chaque utilisateur peut se connecter pour éditer, importer, sauvegarder les bases de données lui appartenant.

Dans le cas présent, phpmyadmin ne fonctionnait plus sur le serveur HS, et nous ne trouvions pas le moyen d’importer nos BDD (bases de données) récentes depuis cette interface web.

Le problème est que nous ne possédions ces BDD que sous la forme d’ensembles de fichiers *.frm, *.MYD , *.opt et *.MIY. Ces fichiers sont appelés le dump de la base de donnée.

C’est sous cette forme d’ensemble de fichiers que mysql gère les BDD et leurs tables. C’est fichiers sont enregistrés, pour un système sous linux, dans l’arborescence suivante:

/var/lib/mysql/nomdelabasededonnée/

La suite logique serait simplement de recréer une base de donnée vide grâce phpmyadmin et de copier les fichiers de l’ancien serveur vers le nouveau dans le répertoire allant bien dans /var/lib/mysql/ .

Lors de cet essai, phpbb nous gratifiait d’une erreur indiquant qu’un fichier *.frm était manquant à la racine du FTP, et wordpress ne voulait plus se connecter à la BDD alors que toute la configuration était bonne.

Nicolas et moi étant persuadés que notre démarche était la bonne, nous avons explorer les documentations disponibles sur mysql. Nous nous sommes aperçus, via la doc francophone d’ubuntu, que le problème venait d’un soucis de droits sur les fichiers composant le dump.

Modification des droits

Nous avons donc suivi cette documentation: http://doc.ubuntu-fr.org/mysql#restauration_a_partir_du_dump_du_datadir

Et entré en console les commandes suivantes (sans retour à la ligne avant d’entrer le chemin du répertoire):

user@computer:$ chmod -R ug+rw /var/lib/mysql/MaBaseDeDonnee/

Celle-ci permettant à l’utilisateur (u) et au groupe (g) propriétaire de lire (r) et d’écrire (w) dans le répertoire /var/lib/mysql/MaBaseDeDonnée/ et ceci de façon recursive (-R)

Puis:

user@computer:$ chown -R mysql:mysql /var/lib/mysql/MaBaseDeDonnee/

Cette commande désignant l’utilisateur mysql et le groupe mysql (mysql:mysql) comme propriétaire du répertoire /var/lib/mysql/MaBaseDeDonne/ .

Là encore de façon récursive (-R), c’est à dire que cette commande inclue l’ensemble des fichiers et des répertoires contenus dans celui désigné par la commande.

Notez enfin, qu’une politique de sauvegarde digne de ce nom vous permettra d’éviter ce genre de problème. Nicolas et moi avons d’ailleurs déjà améliorer notre façon de faire des sauvegardes du blog et du forum, et à défaut de diversifier les types supports, nous avons mis en place des sauvegardes à 2 endroits différents éloignés de 800km .