Je veux vider la base de données sur mon site hébergé à distance à intervalles réguliers à l'aide d'un script shell. Malheureusement, le serveur est verrouillé assez serré, n'a pas mysqldump
installé, les fichiers binaires ne peuvent pas être exécutés par les utilisateurs normaux / dans les répertoires personnels (donc je ne peux pas "l'installer" moi-même) et la base de données vit sur un serveur séparé, donc je ne peut pas saisir les fichiers directement.
La seule chose que je puisse faire est de me connecter au serveur Web via SSH et d'établir une connexion au serveur de base de données à l'aide du mysql
client de ligne de commande. Comment puis-je vider le contenu dans un fichier à la mysqldump
format SQL?
Bonus: si possible, comment puis-je vider le contenu directement à ma fin de la connexion SSH?
J'aime l'idée du tunnel SSH proposée ci-dessous, cependant, je devrais la doubler.
localhost -> remote web server -> remote database server
Cela fonctionne bien:
$ ssh -f -L 3306:mysql.example.com:3306 [email protected] -N
Cependant, la tentative de connexion à mysql échoue:
$ mysqldump -P 3306 -h localhost -u user -p db
Enter password:
mysqldump: Got error: 1045: Access denied for user 'user'@'localhost'
(using password: YES) when trying to connect
Je suppose qu'il s'attend à ce que les informations d'identification de l'utilisateur soient 'user'@'mysql.example.com'
. Comment puis-je le persuader d'utiliser cela au lieu de l'hôte "réel"?
D'accord, je l'ai fait fonctionner en ajoutant 127.0.0.1 mysql.example.com
à mon fichier d'hôtes et en me connectant via mysqldump -P 3306 -h mysql.example.com -u user -p db
. Problème résolu! Je serais toujours intéressé par une solution qui ne nécessite pas que je modifie le fichier hosts.
'user'@'localhost'
en plus de'user'@'mysql.example.com'
dans MySQL, au lieu de modifier le fichier hosts.Réponses:
Vous pouvez définir un tunnel ssh et l'utiliser
mysqldump
sur votre machine locale.la source
http://sypex.net/en/ - vous pouvez utiliser ce script pour la sauvegarde de la base de données après l'avoir téléchargé sur le serveur. Très maniable et rapide
la source
Téléchargez ce script sur votre serveur Web (j'espère que vous avez au moins un accès FTP), démarrez-le, spécifiez le nom / hôte de la base de données (adresse de votre "serveur séparé") / nom d'utilisateur / mot de passe et videz la base de données à l'emplacement de votre choix ...
la source
Si votre serveur est un serveur Web, vous pouvez utiliser un script PHP qui vide la base de données à filtrer. Sur votre serveur de sauvegarde, placez un cron qui wget la page de vidage. Ensuite, votre base de données est transférée sur votre serveur de sauvegarde uniquement par HTTP.
N'oubliez pas la sécurité: tout le monde est disponible pour vider votre base. Mettez un mot de passe ou une limitation IP ...
la source