10

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

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

我知道如何使用 mongo shell 来做到这一点,而且我知道我可以使用 javascript / a .js 使用命令来做到这一点

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

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

如果有人可以

a) 指出一些在 mongoDB 中使用 javascript 的可靠示例和

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

4

4 回答 4

17

Mongo 的 cli 告诉你自己如何用一个 js 文件来使用它

$ mongo --help
MongoDB shell version: 2.0.3
usage: mongo [options] [db address] [file names (ending in .js)]
...

用法:mongo [选项] [数据库地址] [文件名(以.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")
}

更新:
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

于 2012-05-24T20:58:39.913 回答
4

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

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

使用 MongoDB 2.4.8 测试

于 2015-04-23T09:59:38.030 回答
2

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

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

认证数据库和用户使用的数据库可以不同。命令 "getSiblingDB(dataBase)" (Javascript) 是 "use dataBase" (Shell) 的替代方法

于 2020-06-04T12:40:27.637 回答
-3

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

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

于 2012-05-24T19:37:05.500 回答