Ответ 1
работать с этим:
--authenticationDatabase admin
Команды mongodump и mongorestore требуют имя базы данных, в которой хранятся учетные данные пользователя mongodb. (спасибо @Zubair Alam)
Когда я создаю резервную копию всех баз данных в MongoDB (версия 3):
mongodump --username bacUser --password 12345
Все в порядке. Но когда я пытаюсь создать резервную копию выбранного db:
mongodump --username bacUser --password 12345 --db test
Это дает мне эту ошибку:
Ошибка: ошибка подключения к серверу db: ошибка сервера на этапе проверки подлинности SASL: Ошибка аутентификации.
работать с этим:
--authenticationDatabase admin
Команды mongodump и mongorestore требуют имя базы данных, в которой хранятся учетные данные пользователя mongodb. (спасибо @Zubair Alam)
Это должно работать.
mongodump -h SERVER_NAME:PORT -d DATABASE_NAME -u DATABASE_USER -p PASSWORD
Также эта ошибка может появиться, если имя пользователя или пароль неверны.
Если вы по-прежнему получаете ту же ошибку с --authenticationDatabase admin, то, вероятно, неправильное имя пользователя и пароль. Попробуйте добавить пользователя db.createUser() с соответствующей ролью (я также дал разрешение на запись)
чем выполнить команду ниже: (игнорировать -h, если вы работаете на локальном компьютере)
mongodump -h <ip>:<port_number> -d db_name -u newUser -p newPassword -o /home/mongodump/
Надеюсь, что это поможет...
mongodump --collection coll_name --db DBname -u UName -p ***
--authenticationDatabase <admin/privileged> --host ip
--port portNo --out foldName
Следующие шаги работали для меня на MongoDB 3.2:
Монго
использовать admin db.auth( "admin" , "yourpassword" )
Если это возвращает 1, пароль правильный.
Затем добавьте роль "резервное копирование" в ваш администратор (или убедитесь, что эта роль уже добавлена). db.grantRolesToUser( "admin" , [{role: "backup", db: "admin" }])
Наконец, команда mongodump. Это не сработало для меня, когда я пытался передать пароль в качестве аргумента. Вместо этого сделайте следующее:
mongodump - имя пользователя admin --authenticationDatabase admin --db yourmongodatabase
Затем добавьте свой пароль, когда он проголосует за него.
Это работает для меня...
Используйте Signle Цитата вокруг пароля. если вы используете какой-либо специальный символ в вашем пароле. Это решит вашу проблему. Используйте следующую команду.
mongodump -d имя_базы_данных -u имя_пользователя -p 'пароль' --out имя_каталога
для сброса и восстановления
mongodump --db nameDatabase --username userName --password password --authenticationDatabase admin --out mongodb\
mongorestore --db nameDatabase --username userName --password password --authenticationDatabase admin <path backup> --drop
У меня возникла такая же проблема при попытке вывести информацию из базы данных из mLab. Это происходило потому, что у меня был монго 2.x
локально и 3.x
в mLab. Обновление моего локального монго до той же основной версии, что и mLab, позволило мне сделать дамп, решив проблему.
Если вы используете mLab, то это может быть версия в вашем местном монго не совпадает с mLab. По умолчанию Ubuntu будет установлен Монго v2.x
и MLAB является v3.x
. Вы можете проверить с помощью этой команды:
mongo --version
Установите новую версию Монго:
sudo apt remove mongo-clients mongodb
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv D68FA50FEA312927
Создайте файл списка для MongoDB.
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
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
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>