web-dev-qa-db-fra.com

Comment automatiser la récupération des bases de données MySQL à partir d'un hébergement partagé, ce qui interdit les connexions MySQL à distance?

ma situation est la suivante:

  • J'ai besoin de faire une sauvegarde automatique d'une base de données
  • Je n'ai qu'un accès FTP, PhpMyAdmin et PHP

Alors:

  • Pas de SSH signifie que je ne peux pas utiliser mysqldump
  • Pas de Perl (et pas de cron) signifie que je ne peux pas appeler le script mysqldumper cron

Connaissez-vous un outil qui permettrait de sauvegarder sans aide une base de données? Par non assisté, je veux dire que je voudrais l'appeler en utilisant une commande curl par exemple ...

Je mettrai probablement en place un VPS dans un proche avenir, mais pour le moment je suis coincé avec ce fournisseur!

2
Palantir

Cela ressemble à un travail pour phpMyBackupPro que j'ai utilisé il y a longtemps dans une situation similaire. Il vous permettra de créer une sauvegarde planifiée en appelant un simple script PHP sur votre serveur que vous pouvez appeler par URL. Les sauvegardes peuvent ensuite être stockées sur le serveur, envoyées par FTP à un autre serveur ou envoyées par courrier.

Dans mon ancienne configuration, j’ai même écrit un simple script XML-RPC appelant le script de sauvegarde planifié phpMBP (ici nommé 'ping.php') lorsque cinglé, par exemple. WordPress:

<?xml version="1.0"?>
<?php @include('ping.php'); ?>
<methodResponse>
<params>
  <param>
    <value>
       <struct>
         <member>
           <name>flerror</name>
             <value>
               <boolean>0</boolean>
             </value>
         </member>
         <member>
           <name>message</name>
           <value>Thanks for the ping.</value>
         </member>
       </struct>
     </value>
   </param>
 </params>
</methodResponse>

Cependant, je recommanderais de passer à un VPS dès que possible. Les VPS étant peu coûteux et abondants, il n’ya pas de doute aujourd’hui sur les hôtes partagés.

2
Anders Dahnielson

mysqldump fonctionne pour les hôtes distants - utilisez l'indicateur -h pour spécifier l'hôte auquel vous souhaitez vous connecter (et assurez-vous que votre compte d'hébergement partagé est configuré pour accepter les connexions à partir de l'adresse IP de l'hôte distant et les informations d'identification d'accès).

Il est également très probable que mysqldump soit installé sur le serveur et il est également probable que les opérateurs PHP opérateurs d'exécution soient activés. (une idée horrible pour l'hébergement partagé, mais malheureusement assez commun) afin que vous puissiez peut-être utiliser PHP pour exécuter des commandes Shell et atteindre votre objectif.


Edit: Si les connexions MySQL distantes et les opérateurs d’exécution sont désactivés, le script cURL qui phrac recommandé peut être une solution, mais même si ce script ne répond pas à vos besoins, vous avez toujours des options (si vous pouvez accéder aux données et exécuter des scripts, vous pouvez toujours obtenir une copie).

Si mysqldump est installé sur votre serveur d'hébergement partagé, vous pouvez créer un travail cron pour vider la base de données dans un répertoire accessible par le Web, par exemple. mysqldump dbname > /path/to/www/subdir/backup.sql (assurez-vous simplement que le sous-répertoire bloque l'accès par des adresses IP non fiables)

Si vous n'avez pas mysqldump sur le serveur d'hébergement partagé, vous pouvez écrire un script PHP qui exécute un SELECT ... INTO OUTFILE requête (encore une fois, sous un répertoire protégé accessible sur le Web avec des autorisations d'écriture indulgentes).

Si vous n'avez pas l'option d'accorder à un utilisateur MySQL des privilèges suffisants pour écrire dans un fichier de sortie, vous pouvez quand même écrire un script PHP qui (c'est un moche solution) fait écho aux instructions MySQL INSERT de vos données en réponse aux requêtes et place ce script dans un répertoire accessible par le Web.

1
danlefree

Une recherche rapide sur Google a révélé un script qui prétend utiliser cURL pour accéder à phpMyAdmin et effectuer un dump, mais je ne l'ai pas personnellement testé:

http://picoforge.int-evry.fr/websvn/filedetails.php?repname=curlmyback&path=%2Ftrunk%2Fcurl-backup-phpmyadmin.sh&rev=0&sc=

1
phrac