PHP драйвер Mongodb: как создать базу данных и добавить в нее пользователя? - PullRequest
2 голосов
/ 26 июня 2011

поэтому, используя оболочку mongodb, я смог создать базу данных и добавить к ней имя пользователя и пароль. Как я могу сделать то же самое в php? У меня все установлено и я могу подключиться к серверу mongodb.

Однако я не могу найти никакой информации в документе .

Ответы [ 2 ]

4 голосов
/ 26 июня 2011

Я не верю, addUser() реализовано в драйвере PHP.

Однако есть execute, который должен позволить вам сделать 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));
?>

Это добавляет нового пользователя в базу данных администратора на моемсервер - проверяется через оболочку mongo после выполнения сценария PHP.

Тем не менее, почему вы хотите добавить пользователя Mongo из сценария PHP?

2 голосов
/ 29 апреля 2015

Способ создания нового пользователя mongodb из PHP - через 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...