Как создать новый MongoDB из командной строки с включенной аутентификацией?

для того, чтобы создать базу данных MongoDB в задаче Capistrano, мне нужно выяснить, как создать новую базу данных через оболочку MongoDB, когда MongoDB работает с включенной аутентификацией.

С включенным auth оболочка MongoDB ничего не может сделать без предварительной аутентификации, но аутентификация должна произойти при использовании admin база данных, насколько мне известно. Поэтому я подключался к нему для начала, как:

sudo -u mongodb mongo admin --eval "db.auth(username, password)"

и что аутентифицирует меня для дальнейших действий, но...в этот момент мне нужно создать базу данных и пользователя для нее в том же сеансе оболочки. Однако я не могу:

sudo -u mongodb mongo admin --eval "db.auth(username, password);use new_database"

, потому что use database не может использоваться в eval. Поэтому я попробовал вместо этого:

sudo -u mongodb mongo admin --eval "db.auth(username, password);db = connect('localhost:27017/new_database')"

и это фактически даст мне экземпляр новой базы данных, которую я хочу создать, но если я попытаюсь:

sudo -u mongodb mongo admin --eval "db.auth(username, password);connect('localhost:27017/new_database').addUser(new_user, new_password)"

Я получаю ошибку аутентификации, поэтому, по-видимому, используя connect() команда забывает, что я прошел проверку подлинности до.

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

любые предложения о том, как я могу это сделать?

2 ответов


можно использовать db.getSiblingDB(имя) для ссылки на новую базу данных и добавления новой учетной записи, например:

mongo -u username -p password admin --eval "db.getSiblingDB('new_database').addUser('new_user', 'new_password');"

теперь вы должны иметь возможность аутентификации из командной строки с помощью -u и-p:

mongo -u new_user -p new_password new_database

помните, что addUser функция устарела с версии 2.6.

использовать db.createUser() и db.updateUser() вместо db.addUser() для добавления пользователей в MongoDB.

ваш код должен быть следующим:

mongo -u username -p password admin --eval "db.getSiblingDB('new_database').createUser({ user : 'new_user', pwd :  'new_password', roles : [{ role: 'readWrite', db: 'new_database'}]});"