доступ к mysqldump запрещен

#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
  

Это очень «простой и глупый» способ клонирования вашей базы данных с того же сервера на новый. Также мое описание здесь простое и глупое, но, возможно, оно когда-нибудь кому-нибудь пригодится 🙂