How does this work for connections to replication sets?
Does the connection string become:
"mongodb://user:password@server1:27017,server2:27017,server3:27017"
Если MongoDB запускается с опциями --auth
или
--keyFile
, необходимо пройти аутентификацию,
прежде чем выполнять какие-либо операции с драйвером. Можно аутентифицировать соединение,
указав имя пользователя и пароль в URI или указать параметры
"username"
и "password"
в
MongoClient::__construct().
Пример #1 Аутентификация в базе данных "admin"
<?php
// Указание имени пользователя и пароля в URI соединения (предпочтительно)
$m = new MongoClient("mongodb://${username}:${password}@localhost");
// Указание имени пользователя и пароля через массив параметров (альтернатива)
$m = new MongoClient("mongodb://localhost", array("username" => $username, "password" => $password));
?>
По умолчанию драйвер будет проходить аутентификацию в базе данных admin
.
Можно аутентифицироваться в другой базе данных, указав ее либо в URI соединения,
либо в параметре "db"
для MongoClient::__construct().
Пример #2 Аутентификация в прочих базах данных
<?php
// Указание базы данных в URI соединения (предпочтительно)
$m = new MongoClient("mongodb://${username}:${password}@localhost/myDatabase");
// Указание базы данных через массив параметров (альтернатива)
$m = new MongoClient("mongodb://${username}:${password}@localhost", array("db" => "myDatabase"));
?>
Если подключение разорвано, драйвер автоматически попытается его восстановить и подтвердить вашу подлинность.
How does this work for connections to replication sets?
Does the connection string become:
"mongodb://user:password@server1:27017,server2:27017,server3:27017"
For connecting to a replica set with authentication it is possible to use a connection string like the following (substitute the port numbers, replica set name and DB with your own)
$m = new MongoClient("mongodb://${username}:${password}@localhost:27037,mongodb://${username}:${password}@localhost:27038",
array("replicaSet" => "test"_replica, "db" => "mytestdb"));
The second member string "mongodb://${username}:${password}@localhost:27038" does not need the username and password - however, if the connection to the first member fails I have not tested to see if the username and password persist to the second member.