Создайте пользователя MongoDB из командной строки
Я установил базу данных MongoDB с пользователем admin
, который имеет только права администратора, а не читать или записывать доступ к базам данных.
Теперь я хочу:
- Добавить новую базу данных,
- и добавьте нового пользователя в эту базу данных.
И: Мне нужно сделать это из командной строки. Поэтому я попробовал:
$ mongo admin -u admin -p admin --eval "db.addUser('dummyuser', 'dummysecret')"
(Обратите внимание, что, поскольку я все еще использую MongoDB 2.0, я использую старый формат db.addUser
.)
Это имело бы смысл, если бы я мог сказать, для какой базы данных должен быть этот пользователь. Но сейчас я борюсь. Как указать базу данных для этой команды? Если бы я был в интерактивной оболочке, я мог бы просто запустить
> use dummydb
но как это сделать из командной строки? Моя первая попытка состояла в том, чтобы объединить обе команды с помощью ;
, но это не сработало:
$ mongo admin -u admin -p admin --eval "use dummydb;db.addUser('dummyuser', 'dummysecret')"
просто дает мне синтаксическую ошибку.
Как я получу это правильно?
Ответы
Ответ 1
Синтаксис use db
поддерживается только в интерактивном сеансе оболочки.
Если вы хотите изменить базы данных из сценария администратора, вы можете использовать db.getSiblingDB('dbname')
.
Таким образом, ваша эквивалентная командная строка с использованием --eval
будет выглядеть так:
# MongoDB 2.6+: use createUser()
$ mongo admin -u admin -p admin --eval "db.getSiblingDB('dummydb').createUser({user: 'dummyuser', pwd: 'dummysecret', roles: ['readWrite']})"
# MongoDB 2.4: use addUser()
$ mongo admin -u admin -p admin --eval "db.getSiblingDB('dummydb').addUser('dummyuser', 'dummysecret')"
В руководстве MongoDB есть раздел, посвященный различиям между интерактивным и скриптовым mongo
. Это включает эквиваленты для других интерактивных помощников оболочки, таких как show dbs
и show collections
.
Ответ 2
Решил его, поместив команды
use dummydb
db.addUser('dummyuser', 'dummysecret')
в файл .js
, а затем запустить MongoDB, вызвав:
$ mongo admin -u admin -p admin < setupMongoDB.js
Что это: -)
Ответ 3
Выше в моем случае не сработало
use dumyDb
db.createUser({user: "admin",pwd: "[email protected]",roles: [ { role: "readWrite", db: "reporting" } ],mechanisms: [ "SCRAM-SHA-256" ] }