Я хочу регулярно выгружать базу данных на моем удаленно размещенном сайте с помощью сценария оболочки. К сожалению, сервер довольно плотно заблокирован, не mysqldump
установлен, двоичные файлы не могут быть выполнены обычными пользователями / в домашних каталогах (поэтому я не могу «установить» его сам), а база данных находится на отдельном сервере, поэтому я не могу получить файлы напрямую.
Единственное, что я могу сделать, это войти в веб-сервер через SSH и установить соединение с сервером базы данных с помощью mysql
клиента командной строки. Как я могу вывести содержимое в файл а-ля mysqldump
в формате SQL?
Бонус: если возможно, как я могу вывести содержимое прямо на мой конец SSH-соединения?
Мне нравится идея туннеля SSH, предложенная ниже, однако, мне нужно будет дважды туннелировать ее.
localhost -> remote web server -> remote database server
Это работает хорошо:
$ ssh -f -L 3306:mysql.example.com:3306 user@ssh.example.com -N
Однако, попытка войти к mysql терпит неудачу:
$ 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
Я предполагаю, что ожидается, что учетные данные пользователя будут 'user'@'mysql.example.com'
. Как я могу убедить это использовать это вместо "реального" хоста?
Хорошо, я получил его на работу, добавив 127.0.0.1 mysql.example.com
в мой файл hosts и подключившись через mysqldump -P 3306 -h mysql.example.com -u user -p db
. Проблема решена! Я все еще был бы заинтересован в решении, которое не требует от меня редактирования файла hosts.
'user'@'localhost'
в дополнение к'user'@'mysql.example.com'
MySQL, а не редактировать файл hosts.Ответы:
Вы можете установить ssh-туннель и использовать его
mysqldump
на своей локальной машине.источник
http://sypex.net/en/ - вы можете использовать этот скрипт для резервного копирования базы данных после загрузки его на сервер. Очень удобно и быстро
источник
Загрузите этот скрипт на ваш веб-сервер (надеюсь, у вас есть хотя бы FTP-доступ), запустите его, укажите имя базы данных / хост (адрес вашего «отдельного сервера») / имя пользователя / пароль и дамп базы данных в любое место, куда вы хотите ...
источник
Если ваш сервер является веб-сервером, вы можете использовать скрипт PHP, который выводит базу данных на экран. На вашем сервере резервного копирования поместите cron, который создает страницу дампа. Затем ваша база данных сбрасывается на ваш резервный сервер только по HTTP.
Не забывайте о безопасности: все могут свалить вашу базу. Поставьте пароль или ограничение IP ...
источник