как проделать mysqldump базы с хостинга на локальную машину?

leana

Новичок
как проделать mysqldump базы с хостинга на локальную машину?

Предыстория
В базе на хостинге некоторые поля отражаются "кракозябрами". Это произошло потому, что кодировка клиента отличалатсь от кодировки таблиц базы, заданной по умолчанию.
Вот здесь предлагают решение этой проблемы. Оно заключается в том, что нужно сделать дамп криво отображающейся базы, явно задав при этом кодировку:
Допустим, мы выяснили, что таблицы были созданы по умолчанию в кодировке latin1, а фактически в них содержатся данные в utf8. В этом случае используем команду:
mysqldump -uUSERNAME -pPASSWORD DB_NAME --allow-keywords --create-options --complete-insert --default-character-set=latin1 --add-drop-table > dump.sql
Распространненая ошибка в таких случаях - когда в --default-character-set указывают фактическую кодировку данных, в данном случае - utf8. В дампе будет мусор. Указывать надо ту, которая установлена в таблицах. В результате MySQL не будет пытаться данные перекодировать, и отдаст как есть.
Суть проблемы
инструментом для создания дампа на хостинге служит "phpMyAdmin", там есть закладка "EXPORT"; Проблема в том, что пользуясь phpMyAdmin, нельзя задать параметр "--default-character-set".
Я так понимаю, mysqldump можно проделать со своей машины, указав хост, порт, пользователя, пароль и имя базы. В терминале Ubuntu я ввожу вот что:
PHP:
sudo mysqldump -h<адрес удалённого SQL-сервера> -u<пользователь базы> -p<пароль пользователя> <имя БД> --allow-keywords --create-options --complete-insert --default-character-set=<нужная мне кодировка> --add-drop-table > /<путь к создаваемому файлу дампа на локальной машине>
Терминал выдаёт:
mysqldump: Got error: 1045: Access denied for user '<мой пользователь базы>'@'<мой IP, выделенный провайдером>' (using password: YES) when trying to connect
Помогите разрулить ситуацию,
Спасибо.
 

DiMA

php.spb.ru
Команда форума
> mysqldump: Got error: 1045: Access denied for user '<мой

естественно, никто не пустит тебя с чужого хоста

сделай свой экспорт
 

leana

Новичок
Автор оригинала: DiMA
на пхп напиши SELECT * FROM...
Дима, было бы здорово, если бы ты дал развёрнутую инструкцию. Что имеется в виду? Что мне надо сделать какой-нибудь файлик "export.php", и в этом файлике написать селект в нужной мне кодировке?
PHP:
<?php     
$db = mysql_connect("<адресс удалённого сервера>", "<польщователь БД>", "<пароль>");     
mysql_select_db("<имя базы>", $db);     
mysql_query("set names <нужная мне кодировка>");           
$result = mysql_query("("SELECT * FROM <...выборку чего?...>,$db);         
?>
- Что должен делать этот селект? Моя задача - перенести содержимое всех таблиц в *.sql - файл, как это указать селектом?
- Допустим, php-файли создан. Что мне делать дальше с этим php-файлом? Разместьть на сервере хостинга и запустить?
 

Фанат

oncle terrible
Команда форума
вот. наконец-то внятное объяснение проблемы, и без пальцев.

вопрос.
какие кодировки в базе и у клиента? данные могут быть побиты невосстановимо, и смысла во всей операции не будет.

вопрос.
в какой кодировке оказывается дамп, сделанный phpMyAdmin-ом?

вопрос. есть ли в phpMyAdmin вкладка, задающая его собственную кодировку?
 

DiMA

php.spb.ru
Команда форума
перенеси хотя бы одну таблицу, нормально
потом обсудим, как всю базу скопировать
 

leana

Новичок
*****:
вот. наконец-то внятное объяснение проблемы, и без пальцев
Дружище, контекст вопроса по сути, ничем не отличается от того, что было во внезапно закрытом тобою топике. Давай не будем возвращаться ни к этому, ни к пальцам, ок?

какие кодировки в базе и у клиента? данные могут быть побиты невосстановимо, и смысла во всей операции не будет.
- соурс-код странички сайта показывает кодировку UTF-8.
- для базы: character_set_database:latin1,
- для таблиц: DEFAULT CHARSET=latin1
в какой кодировке оказывается дамп, сделанный phpMyAdmin-ом?
- Если я правильно понимаю, в utf8 (это написано в комментариях в шапке дампа. Но я не уверен до конца, дальше в инструкции к созданию таблиц указывается latin1;
На всякий случай, вот скриншот файла дампа.
есть ли в phpMyAdmin вкладка, задающая его собственную кодировку?
Кодировку дампа - нет. Или кодировку чего ты имеешь в виду?Вот так выглядит интерфейс создания дампа в phpMyAdmin.

ps
Вот так выглядят кракозябры в таблице.

DiMA:
перенеси хотя бы одну таблицу, нормально
потом обсудим, как всю базу скопировать
Я как раз экспериментирую с дампом из одной таблицы. Результаты те же.

vovanium:
Спасибо, сейчас попробую залить это дело на сервер и опробовать.

-~{}~ 03.05.09 01:13:

vovanium:
- Сделал в каталоге, где лежит индексная сайта, дирректорию для Sypexdumper
- дал привелегии 777.
- Ввожу адрес скрипта.
- ввожу логин и пароль к бд.
получаю:
 

leana

Новичок
vovanium:
Спасибо, скрипт подключился к серверу. Ещё одна вещь, насчет смены кодировки при создании базы из дампа:
<...>возможность принудительного изменения кодировки таблиц, для этого в RESTORE_CHARSET нужно установить 'forced->имя_кодировки', к примеру 'forced->cp1251'. Это как раз для случаев, когда данные в cp1251, а у таблиц - latin1.
Вопрос:
В файле dumper.php, задавая для свойства RESTORE_CHARSET кодировку UTF-8, правильный синтаксис будет 'forced->utf8' или 'forced->utf-8'?
 

vovanium

Новичок
Ты сначала определись в какой кодировке у тебя данные, если таблицы в latin1, то скорее всего нужно восстанавливать в cp1251. У тебя сайт в какой кодировке работает?
 

leana

Новичок
Автор оригинала: vovanium
Ты сначала определись в какой кодировке у тебя данные, если таблицы в latin1, то скорее всего нужно восстанавливать в cp1251. У тебя сайт в какой кодировке работает?
Сайт в UTF-8. Я спрашивал, потому что не был уверен, как оно в SQL-параметрах правльно пишется - utf8 или utf-8. Сейчас могу подтвердить, что utf8 таки. У меня всё получилось как надо.
В сухом остатке :
1. Воспользовался sypexdumper-ом для создания дампа.
2. Вручную отредактировал файл дампа в бокноте, у команды CREATE TABLE раскоментил/поменял параметр "DEFAULT CHARSET=latin1" на "DEFAULT CHARSET=utf8".
3. Добавил в phpMyAdmin через закладку "IMPORT" полученный дамп.
И всё заиграло яркими красками, спасибо тебе большое.

Правда, остаётся проблема - всё это работает до тех пор, пока создаётся дамп для одной таблицы. Открываю файл в редакторе, и там все русские буковки отображаются как надо.
Сделанный таким же образом дамп всех таблиц базы, при открытии в редакторе показывает кракозябры.
Если есть соображения на этот счет, был бы очень признателен.

UPD
При импрорте дампа всех таблиц, данные переносятся правильным образом, и отображаются как надо.

ps
Вопрос в догонку: замену криво отображающихся таблиц в продуктиве на правильно отображающиеся таблицы из дампа можно проделать смело и в любой момент? Или есть какие-нибудь обязательные манипуляции, которые надо произвести?
 

DiMA

php.spb.ru
Команда форума
сохрани весь дамп, либо на 2-3 части, если таблицы с разной кодировкой
в редакторе, умеющем поддерживать все кодировки, открой и сохрани как надо

примитивная пользовательская задача
 

Фанат

oncle terrible
Команда форума
у него уже есть нормальный дамп.
это это не вопрос с проблемой, а перестраховка.
к кодировкам вопрос отношения не имеет - это автора подводит его всегдашняя велеречивость.
он спрашивает, можно ли заливать дамп на продакшен.
 

leana

Новичок
DiMA
Спасибо, всё уже решилось.

*****:
По двум постам о тебе складывается странное впечатление. С одной стороны, твоё пылкое участие в предыдущем топике привело к препирательствам и закрытию поста тобой же. С другой, твоё отсутствие здесь на продуктивном этапе обсуждения позволило довести решение вопроса до конца.
Опять таки, у тебя моя писанина вызывает приступы сарказма - и пишу велеричиво, и вечно у меня что-то там к чему-то отношения не имеет. В связи с этим, возникает вот какое предложение, дружище.
Было бы проще, если бы ты не ходил за мной по форуму, не нужен я тебе. Выгоды очевидна: тебе не придётся пользоваться лишний раз своей удобной админской панелькой, а у меня получится без помех порешать свои смешные проблемы. И это не говоря о тех, кто пользуется форумом для поиска решений - открываешь топик - а там ни флуда, ни сарказма, чистый профит. Так что соглашайся, куда ни глянь - сплошные плюсы.

Постскриптупом, я дико извиняюсь за флуд.
Всё это конечно можно было бы написать тебе в личку, если бы ты не закрыл мне зачем-то доступ к своему профилю.
 

Фанат

oncle terrible
Команда форума
не льсти себе, никто за тобой не ходит =)
я читаю все темы на форуме.
проехали, в общем. и так слишком много разговоров для топика, как найти в пхпмайадмине кнопку, задающую кодировку
 

vovanium

Новичок
leana
ручную отредактировал файл дампа в бокноте, у команды CREATE TABLE раскоментил/поменял параметр "DEFAULT CHARSET=latin1" на "DEFAULT CHARSET=utf8".
Тоже самое дампер делает сам если указать forced->utf8 ;)
 

leana

Новичок
Автор оригинала: vovanium
Тоже самое дампер делает сам если указать forced->utf8 ;)
Лопухнулся, да:)

Что это может быть за ошибка странная в работе скрипта "dumper.php":

Возникает на одном и том же месте, c одной и той же таблицей, без относительно того, целиком делать дамп базы или потаблично. на этапе восстановления.
 

Фанат

oncle terrible
Команда форума
к примеру, в latin 1 это были разные символы, а в utf - один и тот же

-~{}~ 03.05.09 20:09:

надо строку смотреть, гадать-то чего
 
Сверху