8 may. 2015

Habilitar autenticación en un servidor mongodb

En el artículo sobre la instalación de un servidor mongodb le falto definir la autentcación de usuarios que puedan conectarse a dicho servidor.

En este caso se habilitará dicha autenticación para el acceso al servidor.

Lo primero es deshabilitar la autenticación en el archivo /etc/mongodb.conf:
# Turn on/off security.  Off is currently the default
#noauth = true
#auth = true

Se inicia el servicio de mongodb:
 systemctl start  mongodb.service

Se revisa si levanto:
systemctl status  mongodb.service
● mongodb.service - An object/document-oriented database
   Loaded: loaded (/lib/systemd/system/mongodb.service; enabled)
   Active: active (running) since vie 2015-05-08 11:44:26 VET; 5s ago
     Docs: man:mongod(1)
 Main PID: 3405 (mongod)
   CGroup: /system.slice/mongodb.service
           └─3405 /usr/bin/mongod --config /etc/mongodb.conf

may 08 11:44:26 grievous mongod[3405]: all output going to: /var/log/mongodb/mongodb.log

Se accede al shel de mongodb:
mongo
MongoDB shell version: 2.4.10
connecting to: test
>


Se cambia a la base de datos admin: 
> use admin
switched to db admin

Se crea el usuario admin con clave 123456 (sólo de manera didactica) y rol lectura y escritura dbAdmin.


> db.addUser("admin","123")
{
"user" : "admin",
"readOnly" : false,
"pwd" : "9f3121efccbe3fef09a799d5e63077c2",
"_id" : ObjectId("554cf1405cf1b965e6f5c10f")
}


Se sale de la base de datos: 
> exit 
bye


Ahora se edita el archivo /etc/mongodb.conf  para habilitar la autenticación: 
# Turn on/off security.  Off is currently the default
#noauth = true
auth = true

Se reinicia mongodb:
systemctl stop  mongodb.service
systemctl stop  mongodb.service
systemctl status   mongodb.service
● mongodb.service - An object/document-oriented database
   Loaded: loaded (/lib/systemd/system/mongodb.service; enabled)
   Active: active (running) since vie 2015-05-08 11:58:44 VET; 4s ago
     Docs: man:mongod(1)
 Main PID: 4188 (mongod)
   CGroup: /system.slice/mongodb.service
           └─4188 /usr/bin/mongod --config /etc/mongodb.conf

may 08 11:58:44 grievous mongod[4188]: all output going to: /var/log/mongodb/mongodb.log

Se ejecuta el shell de mongodb y se intenta visualizar las bases de datos: 

> show dbs 
Fri May  8 12:06:19.122 listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46

Se nota que no se tiene autorización para ver la lista de bases de datos.

Para ingresar y autenticar al usuario se hace lo siguiente:

> use admin
switched to db admin
> db.auth("admin", "123")
1

Listar bases de datos:

> show dbs 
admin 0.203125GB
local 0.078125GB
personasdb 0.203125GB

Listar usuarios:
 
> db.system.users.find()
{ "_id" : ObjectId("554ce337c597c2dbd0089d74"), "user" : "admin", "pwd" : "95ec4261124ba5951720b199908d892b", "roles" : [  "readWrite",  "dbAdmin" ] }



Para más información se tiene los siguientes enlace:
Publicar un comentario en la entrada

AddThis