为了想在 Capistrano 任务中创建一个 MongoDB 数据库,我需要弄清楚当 MongoDB 在 auth 开启的情况下运行时如何通过 MongoDB shell 创建一个新数据库。
启用身份验证后,MongoDB shell 必须先进行身份验证才能执行任何操作,但据我所知,必须在使用管理数据库时进行身份验证。所以我一直在连接它,比如:
sudo -u mongodb mongo admin --eval "db.auth(username, password)"
这对我进行了进一步操作的身份验证,但是......此时我需要在同一个 shell 会话中创建数据库和一个用户。但是我不能:
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()
命令会忘记我之前已经过身份验证。
所以这就是我卡住的地方,尝试使用 auth 和管理员用户在 MongoDB 中创建一个数据库。
关于如何做到这一点的任何建议?