Exporter toute la base dans un fichier SQL réutilisable
Objectif de la leçon
Produire un export SQL complet de phpbb_ecole, expliquer sa structure et vérifier qu’il ne choisit pas lui-même la base source lors d’une future restauration.
Explications
Nous sauvegardons un état précis
Au chapitre précédent, vous avez créé les deux témoins de maintenance, relevé l’environnement et préparé une période sans écriture. Le forum source est maintenant fermé avec « Désactiver le forum », et vous n’utilisez plus ses comptes pendant la sauvegarde. Les tâches éventuelles qui écriraient dans le laboratoire doivent également être arrêtées. La fermeture du forum ne bloque pas, à elle seule, toutes les opérations d’un administrateur ou d’une tâche extérieure.
Gardez le serveur de base de données de WampServer en marche : phpMyAdmin doit pouvoir lire ses tables. Nous ne copions pas le dossier interne contenant les fichiers de MySQL pendant son fonctionnement. Nous lui demandons d’exporter les informations dans un format qu’il sait ensuite relire.
Dans Documents\Sauvegardes-phpBB, rouvrez exactement le dossier S1-AAAA-MM-JJ-HHMM-source préparé au chapitre précédent, avec sa date réelle et vos deux fichiers de notes. Ne créez pas un second S1 pour la même opération. S1 désigne cette première sauvegarde du forum source. Ce dossier est extérieur à C:\wamp64\www : il ne doit pas être accessible par une adresse du forum. Si vous avez repris une activité depuis sa préparation, recommencez d’abord la période sans écriture et préparez un nouveau point complet.
Comprendre ce que contient le fichier SQL
SQL est le langage avec lequel un outil dialogue avec notre serveur de base de données. Un export SQL est un fichier texte contenant des instructions pour reconstruire des objets et y remettre les données. La structure décrit notamment les tables et leurs colonnes ; les données contiennent les comptes, messages, permissions et réglages. Il faut les deux.
Vous rencontrerez par exemple CREATE TABLE, qui crée une table, INSERT INTO, qui y introduit des lignes, et parfois ALTER TABLE, qui complète sa structure. Vous n’avez pas à écrire ces instructions. phpMyAdmin les prépare. Conservez aussi les tables vides : elles font partie du fonctionnement de phpBB. Une sauvegarde limitée aux messages perdrait, entre autres, leurs auteurs et leurs permissions.
Le nom des tables commence par le préfixe relevé dans config.php. Nous avons souvent phpbb_, mais utilisez votre valeur réelle. Ne changez pas ce préfixe pour la sauvegarde : le prochain chapitre reliera une copie des fichiers aux mêmes noms de tables, dans une autre base.
Choisir exactement la base source
Ouvrez le phpMyAdmin de votre installation WampServer et utilisez le même serveur MySQL ou MariaDB que pour Forum école. Le port SQL est celui de l’inventaire, pas nécessairement une valeur mémorisée. Avec le compte SQL phpbb_ecole et son mot de passe, retrouvez la base phpbb_ecole. Un compte de gestion local peut aussi effectuer l’export, mais il ne faut alors sélectionner aucune autre base.
Le compte SQL n’est pas CamilleAdmin. Le premier autorise l’accès à la base ; le second vous connecte au forum. Si phpMyAdmin refuse la connexion, revenez à l’inventaire et au serveur sélectionné. Ne changez pas les mots de passe du forum pour tenter de réparer un accès SQL.
Ouvrez la base phpbb_ecole, puis son onglet « Exporter ». Relisez le nom de la base dans le contexte de la page. Vous devez exporter la base entière, et non une seule table ou l’ensemble du serveur. Relevez dans inventaire.txt le nombre de tables sélectionnées et le préfixe observé. Les nombres de lignes estimés par certains écrans ne constituent pas une preuve d’exhaustivité.
Régler un export complet et neutre
Choisissez la méthode personnalisée, celle qui affiche les options, et le format SQL. Dans la liste des tables, sélectionnez toutes les tables de phpbb_ecole avec leur structure et leurs données. Selon la version de phpMyAdmin, ces choix sont regroupés ou présentés dans des colonnes séparées. Vérifiez leur sens annoncé ; n’utilisez pas la position d’une case comme repère.
Demandez l’enregistrement dans un fichier. Pour notre petite base d’exercice, choisissez une sortie sans compression, avec l’encodage UTF-8. Nous pourrons ainsi inspecter le fichier directement. Conservez les options normales de création des tables et d’insertion des données. N’exportez aucun compte SQL ni privilège du serveur.
Dans les options de création d’objets, laissez désactivée l’option qui ajoute CREATE DATABASE / USE. Son libellé exact dépend de la traduction et de la version ; ces deux mots SQL permettent de l’identifier. CREATE DATABASE créerait une base ; USE sélectionnerait celle sur laquelle exécuter les instructions suivantes. Nous voulons choisir nous-mêmes une base de restauration vide, sans que le fichier revienne vers phpbb_ecole.
Pour cet atelier sur une base cible neuve, nous n’avons pas besoin d’ajouter DROP DATABASE ou DROP TABLE. Laissez leur ajout désactivé. DROP signifie supprimer : cette option n’est pas une façon de rendre une sauvegarde plus complète. Nous ne restaurerons pas le fichier sur la source.
Lancez l’export avec le bouton de validation de votre version de phpMyAdmin. Attendez que le téléchargement soit terminé. Enregistrez le résultat sous phpbb_ecole.sql dans S1. Si le navigateur l’a placé dans Téléchargements, copiez-le dans S1 et vérifiez le fichier obtenu. Les doublons provisoires seront traités lorsque le point de sauvegarde sera contrôlé.
Inspecter sans modifier ni exécuter
Dans l’Explorateur Windows, vérifiez l’extension réelle et une taille supérieure à zéro. Ouvrez phpbb_ecole.sql avec le Bloc-notes ou votre éditeur de texte. Cette ouverture sert à lire : n’importez rien dans phpMyAdmin et ne sauvegardez pas une version réécrite par l’éditeur.
Retrouvez des instructions CREATE TABLE et INSERT INTO, les noms de tables attendus et, si votre éditeur le permet, le texte du sujet témoin. L’absence de résultat dans une recherche de phrase peut venir de son encodage dans l’export ; elle doit être examinée, pas compensée en retapant le message dans le fichier. Contrôlez également la fin du document : pas de page d’erreur HTML, de message d’échec PHP ou d’instruction visiblement coupée. Un COMMIT final peut être présent, mais ce n’est pas un marqueur universel obligatoire.
Recherchez CREATE DATABASE et USE. Un commentaire indiquant le nom de la base exportée est normal. Un mot USE à l’intérieur du texte d’un message n’est pas l’instruction SQL USE. Ce qui doit être absent, c’est une instruction active qui crée ou sélectionne la base source. Si vous hésitez à distinguer instruction, commentaire et texte entre guillemets, refaites l’export après avoir contrôlé son option ; n’effectuez aucun remplacement global du nom de la base.
Si vous constatez une erreur, ne passez pas à la restauration. Reprenez l’export tant que la période sans écriture est maintenue. La copie des fichiers, à la leçon suivante, complétera ce même état S1.
Exemple commenté
Exemple — le nom de la base dans le texte
L’en-tête d’un export peut annoncer en commentaire : « Base de données : phpbb_ecole ». C’est une information sur l’origine. En revanche, une instruction USE suivie du nom phpbb_ecole et d’un point-virgule demande au serveur de travailler dans cette base. Même si vous aviez ouvert une autre base dans phpMyAdmin, cette instruction aurait son propre effet.
Notre solution consiste à produire dès le départ un export sans sélection de base. Nous conserverons ensuite les noms des tables et le texte des messages, y compris un éventuel message qui parle de phpbb_ecole.
Exercice à réaliser
Exercice — produire la moitié SQL de S1
1. Sur votre ordinateur, vérifiez la période sans écriture et rouvrez le dossier privé S1 préparé au chapitre 1, avec inventaire.txt et preuves.txt. Gardez le moteur SQL de WampServer démarré.
2. Dans phpMyAdmin, ouvrez phpbb_ecole sur le serveur de l’inventaire. Notez le nombre de tables et leur préfixe.
3. Dans « Exporter », choisissez SQL et les options personnalisées : toutes les tables, structure et données, fichier UTF-8 sans compression, sans ajout CREATE DATABASE / USE ni DROP DATABASE ou DROP TABLE.
4. Téléchargez phpbb_ecole.sql dans S1. Attendez la fin puis relevez sa taille en octets.
5. Lisez le début et la fin dans un éditeur de texte. Contrôlez les instructions et l’absence de sélection de base active. Fermez sans modifier le fichier.
6. Dans preuves.txt, inscrivez le serveur, la base, les heures de début et de fin, les options retenues et le résultat des contrôles. Ne notez aucun mot de passe.
Correction et résultat attendu
Correction et résultat attendu
S1 contient un fichier SQL non vide provenant uniquement de phpbb_ecole. Toutes ses tables ont été sélectionnées avec structure et données. Son préfixe correspond à l’inventaire ; l’export n’impose pas la base de destination. Aucune restauration n’a encore eu lieu.
Si une option CREATE DATABASE / USE est restée cochée, recommencez l’export correctement et contrôlez le nouveau résultat. Si le fichier contient une erreur ou paraît interrompu, conservez la trace de l’échec et refaites l’opération. Ne déclarez pas la sauvegarde complète parce que le téléchargement existe : les fichiers phpBB manquent encore, et le fonctionnement après restauration reste à tester au chapitre suivant.
À retenir
L’export SQL doit contenir toutes les tables avec leur structure et leurs données. Produisez-le au niveau de phpbb_ecole, sans instruction qui choisisse la base source lors d’un import. Gardez le fichier intact, privé et associé à la même période sans écriture que la prochaine copie des fichiers.
Seuil de réussite, en pourcentage : 100 %. QCM obligatoire pour terminer le cours.