Sommaire
On suppose qu’une sauvegarde du site web à été faite et enregistrée sur un PC sauvegarde : on à donc 1 fichier monsitewp.sql (base de données) et un dossier monsitewp qui contient tous les fichiers du site (wp-content,wp-include,wp-admin, fichiers php etc…) et qui se trouvent dans /home/momo
On cherche à transférer ce site sur un nouveau serveur d’un autre hébergeur
(toto est l’utilisateur du serveur, momo est l’utilisateur du PC sauvegarde)
Sur le serveur :
On se connecte en SHH au serveur : ssh toto@IP_serveur -p portSSH
On passe en root : su root
On se place dans le dossier /var/www et on crée un dossier monsitewp : cd /var/www
puis mkdir monsitewp
On change le propriétaire de ce dossier : chown toto:toto monsitewp -R
On crée une base de données vierge qui va accueillir la nouvelle base de données et l’utilisateur/mot de passe pour cette basemysql -u root -p
: connexion à MariaDB (ou MySql) en rootMariaDB [(none)]> CREATE DATABASE newDB;
: création base de donnéesMariaDB [(none)]> CREATE USER newDBuser IDENTIFIED BY 'passDB';
: création utilisateur de cette base avec mot de passeMariaDB [(none)]> GRANT ALL PRIVILEGES ON newDB.* TO newDBuser IDENTIFIED BY 'passDB';
: accorder tous les privilèges à cet utilisateurMariaDB [(none)]> FLUSH PRIVILEGES;
: mettre à jour les privilègesMariaDB [(none)]> exit
: sortie
Depuis le PC sauvegarde :
On copie le fichier monsitewp.sql de la sauvegarde sur le serveur dans le répertoire /home/toto :scp -P portSSH /home/momo/monsitewp.sql toto@IP_serveur:/home/toto/monsitewp.sql
On transfère le dossier monsitewp du PC sauvegarde vers le serveur dans le dossier /var/www/scp -P portSSH -r /home/momo/monsitewp toto@IP_serveur:/var/www/
Lors de l’execution de la commande ci-dessus, on obtient un message d’erreur « scp:stat remote:No such file or directory » ou « permission denied »
Sur le PC sauvegarde, il faut modifier le propriétaire du dossier monsitewp : le remplacer par l’utilisateur principal du serveur (toto)
Il faut donc sur le PC sauvegarde créer cet utilisateur : sudo adduser toto
et le définir comme propriétaire du dossier monsitewp : sudo chown toto:toto monsitewp -R
On relance la commande scp -P portSSH -r /home/momo/monsitewp toto@IP_serveur:/var/www/
et la copie sur le serveur s’effectue correctement (un peu long, faire le test avec rsync au lieu de scp )
Sur le serveur :
Une fois la copie effectuée sur le serveur, on change le propriétaire du dossier monsitewp : sudo chown www-data:www-data monsitewp -R
(www-data est l’utilisateur apache)
Et enfin, on rempli notre base de données vierge avec : mysql -u newDBuser -p newDB < monsitewp.sql
(newDBuser est l’utilisateur initial de la base de données, le mot de passe demandé est le sien : ‘passDB‘)
Deux choses à faire pour finaliser la migration :
- Modifier le fichier /var/www/wp-config.php afin de mettre à jour les paramètres de connexion à la nouvelle base de données
- Mettre à jour les URLs dans la base de données
Pour le fichier wp-config.php : définir DB_NAME, DB_USER et DB_password avec les paramètres de la nouvelle base de données// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'newDB' );
/** MySQL database username */
define( 'DB_USER', 'newDBuser' );
/** MySQL database password */
define( 'DB_PASSWORD', 'passDB' );
Pour la mise à jour des URLs :
Se connecter à MySQL : mysql -u root -p
Sélectionner la base de données : use newDB;
Vérifier les valeurs pour ‘siteurl’ et ‘home’ : SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');
Mettre à jour les URLs (si nécessaire) : il faut mettre à jour les tables wp_options et wp_posts :UPDATE wp_options SET option_value = replace(option_value, 'old_url', 'new_url') WHERE option_name = 'home' OR option_name = 'siteurl';
(remplacer ‘old_url’ et ‘new_url’ par l’ancienne url et la nouvelle)UPDATE wp_posts SET post_content = replace(post_content, 'old_url', 'new_url');
Pour la mise à jour des URLs :
https://webhostinggeeks.com/howto/how-to-change-the-wordpress-urls-in-mysql-database/
https://www.altweb.fr/changer-url-wordpress/
Voilà, c’est fini, on se rend sur le nouveau site pour voir si la migration à fonctionné;
Si problème pour se connecter en admin (perte/oubli de l’ancien login et/ou de l’ancien mot de passe), voici la marche à suivre :
Se connecter à MySQL : mysql -u root -p
Sélectionner la base de données : use newDB;
Afficher les tables et repérer celle qui contient le mot ‘users’ (normalement c’est la table ‘wp_users’) :show tables

Afficher le ou les utilisateurs : SELECT ID, user_login, user_pass FROM wp_users;

On voit ici le login (c’est déjà ça !) et le hash MD5 du mot de passe
On note l’ID du login (ici 1) et on lui attribue un nouveau mot de passe :UPDATE wp_users SET user_pass=MD5('newPassword') WHERE ID = 1;
On doit maintenant normalement pouvoir se connecter au site wordpress en admin avec login=gil78@wp et pass=newPassword
Pour plus de détails voir ici :
https://wordpress.org/documentation/article/reset-your-password/
https://stackoverflow.com/questions/3150571/reset-wordpress-password-via-sql