Come scaricare il database remoto senza mysqldump?


8

Voglio scaricare il database sul mio sito ospitato in remoto a intervalli regolari usando uno script di shell. Sfortunatamente il server è bloccato piuttosto stretto, non ha mysqldumpinstallato, i file binari non possono essere eseguiti da utenti normali / nelle directory home (quindi non posso "installarlo" da solo) e il database vive su un server separato, quindi io impossibile prendere direttamente i file.

L'unica cosa che posso fare è accedere al server web tramite SSH e stabilire una connessione al server di database utilizzando il mysqlclient della riga di comando. Come posso scaricare il contenuto in un file a la mysqldumpin formato SQL?
Bonus: se possibile, come posso scaricare i contenuti direttamente alla mia fine della connessione SSH?


Mi piace l'idea del tunnel SSH proposta di seguito, tuttavia, dovrei raddoppiarla.

localhost -> remote web server -> remote database server

Funziona bene:

$ ssh -f -L 3306:mysql.example.com:3306 user@ssh.example.com -N

Tuttavia, il tentativo di accedere a mysql non riesce:

$ 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

Immagino che si aspetti dalle credenziali dell'utente 'user'@'mysql.example.com'. Come posso convincerlo a usarlo al posto del "vero" host?


Ok, l'ho fatto funzionare aggiungendo 127.0.0.1 mysql.example.comal mio file hosts e connettendomi via mysqldump -P 3306 -h mysql.example.com -u user -p db. Problema risolto! Sarei comunque interessato a una soluzione che non mi imponga di modificare il file hosts.


1
Suggerirei di concedere autorizzazioni 'user'@'localhost'oltre a 'user'@'mysql.example.com'MySQL, anziché modificare il file hosts.
Znarkus,

Risposte:


15

È possibile impostare un tunnel SSH e utilizzare mysqldumpsul proprio computer locale.

ssh -f -L 3306:localhost:3306 user@remoteserver -N
mysqldump -P 3306 -h localhost -u dbuser dbname

1
Su Unix, "localhost" è trattato in modo diverso. In cui, il numero di porta viene ignorato, è necessario utilizzare 127.0.0.1 per farlo funzionare. dev.mysql.com/doc/refman/5.0/en/connecting.html
Adrian Gunawan


0

Carica questo script sul tuo server web (spero che tu abbia almeno l'accesso FTP), avviarlo, specifica il nome / host del database (indirizzo del tuo "server separato") / nome utente / password e scarica il database in qualsiasi posizione desideri ...


0

Se il tuo server è un server Web, puoi utilizzare uno script PHP che scarica il database sullo schermo. Sul tuo server di backup, inserisci un cron che wget la pagina di dump. Quindi il database viene scaricato sul server di backup solo tramite HTTP.

Non dimenticare la sicurezza: tutti sono disponibili per scaricare la tua base. Inserisci una password o una limitazione IP ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.