Как 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 по параметрам подключения.