Mongodb PHP驱动程序:如何创建数据库并向其中添加用户?

Mongodb PHP驱动程序:如何创建数据库并向其中添加用户?,php,mongodb,Php,Mongodb,因此,使用mongodb shell,我能够创建一个数据库并向其中添加用户名和密码。如何在php中实现同样的功能?我已经安装了所有东西,并且能够连接到mongodb服务器 但是,我在中找不到任何信息。我不相信PHP驱动程序中实现了addUser() 但是,有一种方法应该允许您以与mongo shell相同的方式执行addUser(): 编辑:测试后,我无法完成您想要的操作,但我确实发现以下方法有效: <?php // open connection $mongo = new Mon

因此,使用mongodb shell,我能够创建一个数据库并向其中添加用户名和密码。如何在php中实现同样的功能?我已经安装了所有东西,并且能够连接到mongodb服务器


但是,我在中找不到任何信息。

我不相信PHP驱动程序中实现了
addUser()

但是,有一种方法应该允许您以与mongo shell相同的方式执行
addUser()

编辑:测试后,我无法完成您想要的操作,但我确实发现以下方法有效:

<?php
  // open connection
  $mongo = new Mongo("mongodb://" . MONGO_USER . ":" . MONGO_PASS . "@" . MONGO_HOST, array("persist" => "abcd1234"));
  $db = $mongo->selectDB("admin");

  // user info to add
  $username = "testUser";
  $password = "testPassword";

  // insert the user - note that the password gets hashed as 'username:mongo:password'
  // set readOnly to true if user should not have insert/delete privs
  $collection = $db->selectCollection("system.users");
  $collection->insert(array('user' => $username, 'pwd' => md5($username . ":mongo:" . $password), 'readOnly' => false));
?>

这将向我的服务器上的管理数据库添加一个新用户——在执行PHP脚本后通过MongoShell进行检查


也就是说,为什么要从PHP脚本添加Mongo用户?

从PHP创建新mongodb用户的方法是:


使用mongo 3.0和PHP mongo驱动程序1.6进行测试,但这不是只运行Javascript吗?我该如何inovoke mongo shell和add user…或者你是说adduser是在Javascript驱动程序中实现的?在mongo shell中运行的每个命令实际上都是Javascript-请参见-
MongoDB发行版包括bin/mongo,即MongoDB交互shell。此实用程序是一个JavaScript shell,允许您从命令行向MongoDB发出命令。
因此,如果
execute
允许您将任意JavaScript传递给Mongo引擎,那么您应该能够使用shell中使用的相同
addUser
命令。我将很快在我的一个Mongo安装上测试它,并报告。好的,似乎无法使用
execute
执行它,尽管这可能是我犯的一些错误。然而,在深入研究之后,我确实发现了一些应该有效的方法——请参见上面的编辑。是否可以选择一个唯一的数据库并向其中添加用户?基本上,我只希望用户能够访问他/她自己的数据库。当然,只需使用
$db=$mongo->selectDB(“UsersDatabaseNameGoesher”)
。我没有做过,但医生是这么说的:
//info to add
$db_name = 'db_name';
$db_user = 'new_user';
$db_pass = 'new_pass';

//autenticate with a user who can create other users
$mongo = new MongoClient("mongodb://root:root@localhost/admin");
$db = $mongo->selectDB( $db_name );

//command to create a new user
$command = array
(
    "createUser" => $db_user,
    "pwd"        => $db_pass,
    "roles"      => array
    (
        array("role" => "readWrite", "db" => $db_name)
    )
);

//call MongoDB::command to create user in 'db_name' database
$db->command( $command );