Как mysqldump удаленный db с локальной машины

Мне нужно сделать mysqldump базы данных на удаленном сервере, но на сервере не установлен mysqldump. Я хотел бы использовать mysqldump на моей машине для подключения к удаленной базе данных и создания дампа на моей машине.

Я попытался создать туннель ssh, а затем сделать дамп, но это, похоже, не работает. Я пробовал:

ssh -f -L3310:remote.server:3306 [email protected] -N

Туннель создается с успехом. Если я делаю

telnet localhost 3310

Я получаю некоторый рекламный ролик, который показывает правильную версию сервера mysql. Тем не менее, делать следующее, похоже, пытается подключиться локально

mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name

Ответ 1

Как я еще не видел его в serverfault, и ответ довольно прост:

Изменить:

ssh -f -L3310:remote.server:3306 [email protected] -N

To:

ssh -f -L3310:localhost:3306 [email protected] -N

И измените:

mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name

To:

mysqldump -P 3310 -h 127.0.0.1 -u mysql_user -p database_name table_name

(не используйте localhost, это одно из этих "особых значений", которое, вероятно, подключается через сокет, а не по порту)

изменить: хорошо, чтобы уточнить: если для хоста установлено значение localhost, предполагается, что настроенная (или стандартная) опция --socket. См. руководство, для которого запрашиваются/используются файлы параметров. В Windows это может быть именованный канал.

Ответ 2

Вы можете вызвать mysqldump локально на удаленном сервере.

Пример, который работал для меня:

mysqldump -h hostname-of-the-server -u mysql_user -p database_name > file.sql

Я просто следовал документации mysqldump по параметрам подключения.