Я должен сделать mysqldump базы данных по удаленному серверу, но сервер не имеет mysqldump установленным. Я хотел бы использовать mysqldump на своей машине, чтобы соединиться с удаленной базой данных и сделать дамп на моей машине.
Я попытался создать ssh, туннелируют и затем делают дамп, но это, кажется, не работает. Я попробовал:
ssh -f -L3310:remote.server:3306 user@remote.server -N
Туннель создается с успехом. Если я делаю
telnet localhost 3310
Я получаю некоторую аннотацию, которая показывает корректный сервер mysql версия. Однако выполнение следующего, кажется, пытается соединиться локально
mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name
Поскольку я еще не видел этого на serverfault, и ответ довольно прост:
Изменить:
ssh -f -L3310:remote.server:3306 user@remote.server -N
Кому:
ssh -f -L3310:localhost:3306 user@remote.server -N
И изменить:
mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name
Кому:
mysqldump -P 3310 -h 127.0.0.1 -u mysql_user -p database_name table_name
(не используйте localhost, это одна из бессмыслиц со «особым значением», которая, вероятно, подключается через сокет, а не через порт)
править : ну, чтобы уточнить: если хост установлен на localhost
, предполагается сконфигурированная (или по умолчанию) опция - socket
. См. руководство , для которого ищутся / используются файлы опций. В Windows это может быть именованный канал.