Javascript 如何使用脚本在mongodb中创建用户?

Javascript 如何使用脚本在mongodb中创建用户?,javascript,mongodb,Javascript,Mongodb,我正在设置mongodb,我们使用puppet来控制服务器的配置 我已经按照我的需要设置了大多数东西,但是我需要在mongo数据库中创建用户 db = db.getSiblingDB('myDataBase'); db.createUser( { user: "myUser", pwd: "myPwd", roles: [ { role: "readWrite", db: "myDataBase" } ] } ); 我知道如何使用mongo shell实现这

我正在设置mongodb,我们使用puppet来控制服务器的配置

我已经按照我的需要设置了大多数东西,但是我需要在mongo数据库中创建用户

db = db.getSiblingDB('myDataBase');
db.createUser(
 {
   user: "myUser",
   pwd: "myPwd",
   roles: [
    { role: "readWrite", db: "myDataBase" }
   ]
 }
);
我知道如何使用mongo shell实现这一点,并且我知道我可以使用javascript/a.js使用命令实现这一点

db.addUser("username", "password"[, readOnly])
然而,我一直无法找到一个用javascript实现这一点所需的可靠示例。更重要的是,我需要能够使用某种shell脚本从命令行添加用户

如果有人能

a) 让我看一些将javascript与mongoDB和

b) 如何从命令行执行此操作?


或者使用相关的依赖于语言的MongoDB驱动程序,使用您喜爱的脚本语言编写脚本。

Mongo的cli告诉您如何将其与js文件一起使用

$ mongo --help
MongoDB shell version: 2.0.3
usage: mongo [options] [db address] [file names (ending in .js)]
...
用法:mongo[选项][db地址][文件名(以.js结尾)]

例如:

$ echo 'db.addUser("guest", "passwordForGuest", true);' > file.js
$ mongo mydb file.js
MongoDB shell version: 2.0.3
connecting to: mydb
{ "n" : 0, "connectionId" : 1, "err" : null, "ok" : 1 }
{
    "user" : "guest",
    "readOnly" : true,
    "pwd" : "b90ba46d452e5b5ecec64cb64ac5fd90",
    "_id" : ObjectId("4fbea2b013aacb728754fe10")
}
Udpate:
db.addUser自2.6以来已弃用

改用
db.createUser

// file.js
db.createUser(
  {
    user: "guest",
    pwd: "passwordForGuest",
    roles: [ { role: "read", db: "mydb" } ]
  }
)

$mongo mydb file.js

以下是一个更简单、更优雅的解决方案:

echo 'db.addUser("<username>", "<password>");' | mongo <database>
echo'db.addUser(“,”);'蒙戈

使用MongoDB 2.4.8进行测试

我知道AD7six已经给出了一个问题,但当我尝试时,我获得了一个具有数据库身份验证“测试”的用户。
所以我在创建用户之前添加了一个命令来选择这个身份验证数据库

db = db.getSiblingDB('myDataBase');
db.createUser(
 {
   user: "myUser",
   pwd: "myPwd",
   roles: [
    { role: "readWrite", db: "myDataBase" }
   ]
 }
);
身份验证数据库和用户使用的数据库可以不同。
命令“getSiblingDB(dataBase)”(Javascript)是“使用数据库”(Shell)的替代方法。

如何以这种方式分配角色?shell addUser命令似乎不一致——它只接受一个文档参数。是否有Javascript的API文档(与shell相比)。此处的链接:不包含实际文档。如果有问题,您应该问一个问题,因为这与此答案无关。似乎
addUser()
已被弃用,并已被
createUser()
取代。我投了反对票,因为您没有阅读该问题,并链接了用户已阅读的页面,并且没有提供答案。