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

时间:2012-05-24 19:16:18

标签: javascript mongodb

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

我已经设置了大部分内容,我需要它们,但我需要在mongo数据库中创建用户。

我知道如何使用mongo shell执行此操作,我知道我可以使用命令使用javascript / a .js来完成此操作

db.addUser("username", "password"[, readOnly])

但是,我一直无法找到在javascript中执行此操作所需的实例。更重要的是,我需要能够使用某种shell脚本从命令行添加用户。

如果有人可以

a)给我一些使用javascript和mongoDB和

的实例

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

4 个答案:

答案 0 :(得分:14)

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以来已弃用
https://docs.mongodb.com/v2.6/reference/method/db.addUser/

改为使用db.createUser

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

$ mongo mydb file.js

答案 1 :(得分:2)

这是一个更简单优雅的解决方案:

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

使用MongoDB 2.4.8进行测试

答案 2 :(得分:0)

http://www.mongodb.org/display/DOCS/Scripting+the+shell

使用相关语言相关的MongoDB驱动程序,使用您喜欢的脚本语言编写脚本。

答案 3 :(得分:0)

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

db = db.getSiblingDB('myDataBase');
db.createUser(
 {
   user: "myUser",
   pwd: "myPwd",
   roles: [
    { role: "readWrite", db: "myDataBase" }
   ]
 }
);

身份验证数据库和用户使用的数据库可以不同。 命令“ getSiblingDB(dataBase)”(Javascript)是“使用数据库”(Shell)的替代方法