#mysqldump
#mysql
Вопрос:
Когда я пытаюсь создать резервную копию с помощью mysqldump из ssh, я запускаю следующую команду на компьютере 10.64.1.1. Она выдает следующую ошибку.
mysqldump --user=test -p=password --host=10.64.1.2 --tab=. databasename tablename
mysqldump: Got error: 1045: Access denied for user 'test'@'10.64.1.1' (using password: YES)
при попытке подключиться
Однако я могу получить доступ к mysql, используя того же пользователя и пароль.
mysql --user=test -p[password]
Текущий пользователь: test@10.64.1.1
SSL: Not in use
Текущий пейджер: stdout
Использование выходного файла: ''
Использование разделителя: ;
Версия сервера: 5.0.91-50-log Percona SQL Server, Revision 73 (GPL)
Версия протокола: 10
Подключение: 10.64.1.2 via TCP/IP
Обновления:
Если я сделаю следующий документ mysql: --password[=password]
или -p[password]
.
Поскольку мой пароль содержит специальный символ @
, Mysql не может правильно определить пользователя. Он жалуется:
mysqldump: Got error: 1044: Access denied for user 'test'@'%' to database
Ответ №1:
Вы должны запустить CMD.EXE как администратор:
Щелкните правой кнопкой мыши на cmd.exe —> Запустите от имени администратора, а затем введите свою команду:
mysqldump -u [имя пользователя] -p [пароль] -h [ip или имя] yourdatabasename > c:sqlfile.sql
Это должно работать нормально.
Комментарии:
1. Это спасло то, что осталось от моих волос!
2. Вау! Никогда не думал, что выполнить команду будет так сложно.
Ответ №2:
Я думаю, что вам пришлось бы потерять = при использовании -p или сделать это с помощью —password :
—пароль[=password], -p[пароль]
Пароль, который следует использовать при подключении к серверу. Если вы используете форму краткой опции (-p), у вас не может быть пробела между опцией и паролем. Если вы опустите значение пароля после параметра —password или -p в командной строке, вам будет предложено ввести его. Указание пароля в командной строке следует считать небезопасным. Смотрите Раздел 6.6, «Обеспечение безопасности вашего пароля».
Комментарии:
1. Я попробовал ваш метод. Он все еще жалуется. Поскольку мой пароль содержит специальный символ ‘@’, он выглядит как 123 @ 456. Если я использую ваш метод, потеряю = при использовании -p, mysql не сможет правильно определить пользователя. Это показывает: mysqldump: Получена ошибка: 1044: Отказано в доступе для пользователя ‘test’ @’%’ к базе данных.
2. это не мой метод, это официальная документация mysqldump 🙂 Вы пробовали использовать —password с символом = ?
3. ДА. Я пробовал оба. Если я использую метод документации, —password[=пароль] или -p [пароль], mysql не может обнаружить пользователя. Он жалуется: mysqldump: получена ошибка: 1044: Отказано в доступе для пользователя ‘test’ @’%’ к базе данных.
4. Я вижу в вашем mysqldump, что вы используете другой хост, чем при подключении к mysql. Один — 10.64.1.2, а другой — 10.64.1.1. Кроме того, разрешаете ли вы удаленные подключения к mysql?
5. Я так думаю. На компьютере 10.64.1.1 я запускаю: mysql —user=test -p[пароль]. Это работает. Я думаю, что виновником является специальный символ @ в пароле. Как с этим бороться?
Ответ №3:
Я знаю, что тема очень старая, но у меня возникла такая же проблема. Я выяснил, что проблема заключалась просто в специальном символе, используемом в пароле. Фактически они должны быть экранированы с помощью анти-косой черты: --password=123@456
или с использованием кавычек signle --password='123@456'
Комментарии:
1. Это сделало это за меня. Спасибо за публикацию другого ответа на старый вопрос! Приходилось добавлять кавычки в Linux, но в Windows кавычек нет.
2. Спасибо, это решило проблему и для меня. В итоге
-p'P@$$W0RD'
Ответ №4:
У меня была такая же проблема с пользователем DB, созданным через Plesk. У пользователя есть разрешения для одной базы данных. Если я укажу имя базы данных, я получу ошибку, упомянутую выше. Если я укажу -A
для всех баз данных, дамп сработает.
Ответ №5:
В Windows я решил эту проблему, создав каталог, а затем сбросив файл *.sql в каталог резервной копии.
C:backup
Проблем с командами нет:
Снимите квадратные скобки []
mysqldump -u[username] -p[password] -h[ip] yourdb > C:backupsqlfile.sql
У меня это сработало:)
Комментарии:
1. У меня возникла та же проблема, потому что я пытался создать резервную копию в C: buy, когда a изменил маршрут файловой системы на другой, тогда это сработало!
Ответ №6:
Еще одной возможной причиной может быть место, где вы пытаетесь создать дамп. Написание mysqldump -u[username] -p yourdb > D:backupsqlfile.sql
вместо mysqldump -u[username] -p yourdb > sqlfile.sql
решило мою проблему.
Ответ №7:
Для параметров подключения нет =
(знак равенства). Вы хотите следующее.
mysqldump -u test -ppassword -h 10.64.1.2 ...
Ознакомьтесь с документами для получения более подробной информации о других параметрах.
Комментарии:
1. и это все еще не работает, как сказал Тим, когда вы указываете имя базы данных, у меня возникает эта ошибка, экспорт всех баз данных работает нормально
2. Обратите внимание на … , вам нужно будет добавить остальные параметры.
3.
--password=foo
это длинная форма,-pfoo
это короткая форма. Оба допустимы.4. найдено решение — эта ошибка была вызвана тем, что у моего пользователя не было разрешений на блокировку таблицы
Ответ №8:
Вот что сработало у меня — запустите строку cmd от имени администратора. не ставьте пароль после -p, вам автоматически будет предложено ввести пароль, и это сработает.
Ответ №9:
Попытка с помощью этой команды
mysqldump --user=root -p --host=127.0.0.1 --databases database_name [database_name_2,...] > dump.sql
Ответ №10:
Проблема в том, что для создания файла в C: / location требуется дополнительный доступ, поэтому попробуйте использовать другой, подобный для меня, который решается с помощью: mysqldump -u root -p cricket classics > C:Usershabib_s9ayvflDesktopclassics.sql
Ответ №11:
В соответствии с этой страницей https://dev.mysql.com/mysqldump-copying-database откройте окно консоли (например, cmd) и перейдите в папку установки mysql. Например. c:mysql а затем в папку bin, так что у вас естьc:mysqlbin
Затем введите:
mysqldump source_db_name -uuser_name -ppassword > target_database.sql
Убедитесь, что после -u нет пробелов! То же самое с помощью -p! Никаких пробелов!
Когда вы закончите, введите:
mysqladmin create target_database -uuser_name -ppassword
И теперь вы можете перенести данные из target_database.sql в вашу новую базу данных:
mysql target_database < target_database.sql -uuser_name -ppassword
Это очень «простой и глупый» способ клонирования вашей базы данных с того же сервера на новый. Также мое описание здесь простое и глупое, но, возможно, оно когда-нибудь кому-нибудь пригодится 🙂