Невозможно создать резервную копию mongodump с --db. Ошибка аутентификации

Когда я создаю резервную копию всех баз данных в MongoDB (версия 3):

mongodump --username bacUser --password 12345

Ничего страшного. Но когда я пытаюсь создать резервную копию выбранной базы данных:

mongodump --username bacUser --password 12345 --db test

Это дает мне эту ошибку:

Failed: ошибка подключения к серверу db: сервер возвратил ошибку на шаге аутентификации SASL: аутентификация не удалась.


person Vladislav Orillo    schedule 13.08.2015    source источник


Ответы (13)


работать с этим:

--authenticationDatabase admin

Команды mongodump и mongorestore требуют имени базы данных, в которой хранятся учетные данные пользователя mongodb. (спасибо @Zubair Alam)

person Vladislav Orillo    schedule 14.08.2015
comment
Не могли бы вы пояснить, почему это решение? - person Nate Barbettini; 14.08.2015
comment
Команды mongodump и mongorestore требуют имени базы данных, в которой хранятся учетные данные пользователя mongodb. - person Zubair Alam; 28.04.2016
comment
обычно учетные данные хранятся в той же базе данных, которую я хочу создать резервную копию / восстановить, я ошибаюсь? - person alfredopacino; 21.11.2016
comment
@Nate, если вы не укажете authenticationDatabase, mongodump будет использовать базу данных, резервную копию которой вы хотите создать, в качестве базы данных аутентификации. Если пользователь, которого вы аутентифицируете, принадлежит другой базе данных, а не той, для которой вы хотите создать резервную копию, вы получите ошибку аутентификации. - person Maciej Krawczyk; 21.11.2017
comment
Этот ответ работает для меня, полная команда выглядит так: mongodump -u admin -p pwdxxx --authenticationDatabase admin -d mydb -o mydb_backup - person zqcolor; 12.07.2019

Это должно сработать.

mongodump -h SERVER_NAME:PORT -d DATABASE_NAME -u DATABASE_USER -p PASSWORD

Также эта ошибка может появиться, если имя пользователя или пароль неверны.

person Milos Matic    schedule 11.05.2016
comment
это сработало для меня, спасибо, так как многие предлагали выполнить mongodump с параметром authenticationDatabase не работает для меня - person Naga; 21.12.2020

mongodump --host <host-ip> --port 27017 --db <database>  --authenticationDatabase admin --username <username> --password <password> --out ./Documents/

После всего пути я нашел выше рабочую команду для сброса с mongdb.

person Ganesh    schedule 18.02.2020

Если вы по-прежнему получаете ту же ошибку с --authenticationDatabase admin, возможно, ваше имя пользователя и пароль неверны. Попробуйте добавить пользователя db.createUser () с соответствующей ролью (я также дал разрешение на запись)

чем запустите команду ниже: (игнорируйте -h, если вы работаете на локальном компьютере)

 mongodump -h <ip>:<port_number> -d db_name -u newUser -p newPassword -o /home/mongodump/

Надеюсь это поможет...

person Shirish Singh    schedule 26.09.2016
comment
У mlabs также есть онлайн-утилита для создания новых пользователей. у меня работал новый пользователь. - person jsky; 20.10.2016

mongodump   --authenticationDatabase admin -uroot -pyourpassword

здесь root - это имя пользователя, а yourpassword - ваш пароль.

Эта команда создаст резервную копию всех резервных копий базы данных в текущем каталоге.

person Joshi    schedule 29.04.2020

для сброса и восстановления

mongodump --db nameDatabase --username userName --password password --authenticationDatabase admin --out mongodb\
mongorestore --db nameDatabase --username userName --password password --authenticationDatabase admin <path backup> --drop
person user3784566    schedule 18.04.2016
comment
Привет, добро пожаловать в SO. Этот ответ будет более ясным, если вы добавите небольшое пояснение / комментарий. Спасибо! - person Fabio says Reinstate Monica; 18.04.2016

В MongoDB 3.2 у меня сработали следующие шаги:

  1. Конечно, проверьте правильность вашего имени пользователя и пароля администратора. Вы можете сделать это с помощью оболочки mongo:

монго

используйте admin db.auth ("admin", "yourpassword")

Если возвращается 1, пароль правильный.

  1. Затем добавьте роль «резервная копия» своему администратору (или убедитесь, что эта роль уже добавлена). db.grantRolesToUser ("администратор", [{роль: "резервная копия", db: "администратор"}])

  2. Наконец, команда mongodump. У меня не получилось, когда я попытался передать пароль в качестве аргумента. Вместо этого сделайте это:

mongodump --username admin --authenticationDatabase admin --db yourmongodatabase

Затем добавьте свой пароль, когда он предложит его.

Это работает для меня ...

person user2996950    schedule 20.04.2017
comment
Очень важно, чтобы у пользователя была соответствующая роль: резервная копия или root. - person Ivan Gusev; 31.01.2018
comment
Это случилось и со мной, только когда я удаляю пароль, а затем набираю его в следующей строке, это сработало. Проблема заключалась в том, что у меня были специальные символы, тогда мне пришлось использовать одинарные кавычки вместо двойных ... спасибо @adeel за его ответ. - person user2503775; 11.04.2019

Используйте подпись цитаты вокруг пароля. если вы используете какой-либо специальный символ в своем пароле. Это решит вашу проблему. Используйте следующую команду.

mongodump -d имя_базы_данных -u имя_пользователя -p 'пароль' --out имя_каталога

person adeel    schedule 05.03.2018

В моем случае mongodump неправильно обрабатывал пароль. Решение состояло в том, чтобы избежать буквального пароля.

Это не сработало:

mongodump -p my$password -o <output directory>

Это сработало:

mongodump -p 'my$password' -o <output directory>

person user2722165    schedule 20.11.2019

userAdminAnyDatabase недостаточно для выполнения mongodump для всех баз данных, поэтому вы получаете эту ошибку. Вам понадобится суперпользователь, у которого есть:

userAdminAnyDatabase
readWriteAnyDatabase
clusterAdmin

привилегии для запуска mongodump на всех dbs.

ИЛИ вам просто нужна привилегия «резервного копирования»

db.grantRolesToUser('username', [{
  role: 'backup',
  db: 'name of ur authentication db'
}])
person Aero Wang    schedule 20.03.2020

У меня была такая же проблема при попытке сбросить информацию о моей базе данных из mLab. Это произошло потому, что у меня было 2.x монго локально и 3.x в млабабе. Обновление моего локального mongo до той же основной версии, что и mLab, позволило мне сделать дамп, тем самым решив проблему.

person Marcelo Lazaroni    schedule 29.07.2018

Если вы используете параметр --uri, вам необходимо добавить _2 _ в качестве параметра вашей строки подключения (при условии, что ваш пользователь находится в базе данных администратора)

mongodump --uri="mongodb://user:pass@host1:27017,host2:27017,host3:27017/?replicaSet=rs0"

Становится:

mongodump --db=test --uri="mongodb://user:pass@host1:27017,host2:27017,host3:27017/?replicaSet=rs0&authSource=admin"
person Gert van den Berg    schedule 02.03.2020

Если вы используете mLab, возможно, версия в вашем местном монго не совпадает с mLab. По умолчанию Ubuntu устанавливает mongo v2.x, а mLab - v3.x. Вы можете проверить эту команду:

mongo --version

Установить новую версию mongo:

  1. Удалите свою старую локальную монго (будьте осторожны, она может удалить всю вашу локальную базу данных)
sudo apt remove mongo-clients mongodb
  1. Импортируйте открытый ключ, используемый системой управления пакетами.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv D68FA50FEA312927
  1. Создайте файл списка для MongoDB.

    • Ubuntu 14.04
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
  • Ubuntu 16.04
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
  1. Установите пакеты MongoDB
sudo apt-get install -y mongodb-org

Ссылка: https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/

Теперь вы можете выгрузить свою базу данных с помощью этой команды:

mongodump -h <host>:<port> -d <database-name> -u <user> -p <password> -o <output directory>
person windyzboy    schedule 13.05.2019