Для того, чтобы создать базу данных MongoDB в задаче Capistrano, мне нужно выяснить, как создать новую базу данных через оболочку MongoDB, когда MongoDB работает с включенным auth.
С включенным 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 и пользователя admin.
Любые предложения о том, как я могу это сделать?