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

时间:2011-06-26 04:55:58

标签: php mongodb

所以使用mongodb shell,我能够创建一个数据库并为其添加用户名和密码。我怎么能在PHP中做同样的事情?我安装了所有东西并能够连接到mongodb服务器。

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

2 个答案:

答案 0 :(得分:4)

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

然而,有一个execute应该允许你以与mongo shell相同的方式执行addUser()

编辑:经过测试,我无法让execute做你想做的事,但我确实发现以下工作:

<?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));
?>

将新用户添加到我服务器上的admin db - 在执行PHP脚本后通过mongo shell进行检查。

那就是说 - 你为什么要从PHP脚本中添加一个Mongo用户?

答案 1 :(得分:2)

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

//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 );

使用mongo 3.0和PHP mongo驱动程序1.6进行测试