gpt4 book ai didi

mongodb - 如何在启用身份验证的情况下从命令行创建新的 MongoDB?

转载 作者:IT老高 更新时间:2023-10-28 13:13:19 25 4
gpt4 key购买 nike

为了想在 Capistrano 任务中创建一个 MongoDB 数据库,我需要弄清楚当 MongoDB 在 auth 开启的情况下运行时如何通过 MongoDB shell 创建一个新数据库。

启用身份验证后,MongoDB shell 必须先进行身份验证才能执行任何操作,但据我所知,必须在使用 admin 数据库时进行身份验证。所以我一直在连接它,比如:

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

这对我进行了进一步操作的身份验证,但是...此时我需要创建数据库,并在同一个 shell session 中为其创建一个用户。但是我不能:

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 中创建一个数据库。

关于如何做到这一点的任何建议?

最佳答案

您可以使用 db.getSiblingDB(name)引用新数据库并添加新帐户,例如:

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

关于mongodb - 如何在启用身份验证的情况下从命令行创建新的 MongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11279327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com