Habilitar autenticación en un servidor mongodb
Posted on vie 08 mayo 2015 in Tutorial Linux • 2 min read
En el artículo sobre la instalación de un servidor mongodb faltó 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 shell 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 intentan 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 tienen los siguientes enlaces:
- https://dezkareid.wordpress.com/2013/07/29/control-de-usuarios-en-mongodb/
- https://carlosazaustre.es/blog/como-conectarte-remotamente-a-tu-base-de-datos-mongodb/
- http://docs.mongodb.org/v2.4/tutorial/add-user-to-database/
- http://juanvicenteherrera.es/2011/12/20/mongodb-conceptos-de-seguridad/
- https://alexanderae.com/mongodb-autenticacion-autorizacion.html
¡Haz tu donativo! Si te gustó el artículo puedes realizar un donativo con Bitcoin (BTC) usando la billetera digital de tu preferencia a la siguiente dirección: 17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV
O Escaneando el código QR desde la billetera: