PHP Velho Oeste 2024

Autenticación

Si MongoDB se inicia con las opciones --auth o --keyFile, se debe autenticar antes de poder realizar cualquier operación con el controlador. Se podría autenticar una conexión especificando el nombre de usuario y la contraseña, o bien en el URI de conexión, o bien en las opciones "username" y "password" de MongoClient::__construct().

Ejemplo #1 Autenticación en la base de datos "admin"

<?php
// Especificar el nombre de usuario y la contraseña en el URI de conexión (preferido)
$m = new MongoClient("mongodb://${username}:${password}@localhost");

// Especificar el nombre de usuario y la contraseña mediante el array de opciones (alternativa)
$m = new MongoClient("mongodb://localhost", array("username" => $username"password" => $password));
?>

Por omisión, el controlador autenticará en la base de datos admin. Se podría autenticar en una base de datos diferente especificándola en el URI de conexión o en la opción "db" de MongoClient::__construct().

Ejemplo #2 Autenticación en bases de datos normales

<?php
// Especificar la base de datos de autenticación en la URI de conexión (preferido)
$m = new MongoClient("mongodb://${username}:${password}@localhost/myDatabase");

// Especificar la base de datos de autenticación mediante el array de opciones (alternativa)
$m = new MongoClient("mongodb://${username}:${password}@localhost", array("db" => "myDatabase"));
?>

Si la conexión se your connection is dropped, the driver will automatically attempt to reconnect and reauthenticate you.

add a note add a note

User Contributed Notes 2 notes

up
1
davida at quickplay dot com
9 years ago
How does this work for connections to replication sets?

Does the connection string become:
"mongodb://user:password@server1:27017,server2:27017,server3:27017"
up
0
dan at kayakaddict dot co dot uk
8 years ago
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.
To Top