Buscar en moleculax
¿Como crear autenticación y permitir acceso remoto a Mongodb?

Por defecto, Mongodb no tiene ningún tipo de autenticación activada y no permite el acceso remoto, a diferencia de la mayoría de Base de Datos como Mysql, MS SQL, Postgres, etc. que vienen con algún nivel básico de autenticación.
En este articulo te mostraré como hacerlo paso por paso para MongoDB 3.X.
Si todavía no tienes instalado MongoDB,  y usa debian solo tiene que revisar este materiar: 

1. Iniciar MongoDB. (No es necesario si ya se encuentra corriendo actualmente).

$ mongod --port 27017 --dbpath /data/db1

2. Conectar a la BD.

$ mongo --port 27017

3. Crear el Usuario administrador.

Agregar un usuario con el rol de readWrite. En este ejemplo estamos agregando el usuario: superAdmin en la BD admin:
$ use admin
$ db.createUser(
  {
    user: "superAdmin",
    pwd: "pass1234",
    roles: [ { role: "root", db: "admin" } ]
  })

4. Habilitar la autenticación y abrir el acceso a MongoDB a todas las IPs.

Edita tu archivo de configuración de MongoDB.
En Ubuntu:
$ sudo nano /etc/mongod.conf
  • Busca la linea net y comenta la líneabindIp debajo de ella, la cual por defecto limita a MongoDB a conexiones locales:
# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- code="" comenta="" esta="" linea="">
  • Baja un poco más a la sección #security: y agrega la siguiente línea. Asegúrate de quitar el comentario a la línea security:.
security:
  authorization: 'enabled'

5. Reinicia MongoDB.

$ sudo service mongod restart

6. Conéctate a la BD de manera local con tu cuenta de superAdmin.

$ mongo --port 27017 -u "superAdmin" -p "pass1234" --authenticationDatabase "admin"

7. Abrir puertos en el servidor para el acceso remoto.

Si utilizas Cualquier Servidor Linux, asegúrate de abrir el puerto en los iptables.
sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
Si utilizas Amazon:
  • Ve a tu Dashboard de ec2: https://console.aws.amazon.com/ec2/
  • Luego aInstances selecciona tu instancia, muévete hacia abajo para ver el Security Groups de tu instancia. Ejemplo: launch-wizard-4
  • Ve aNetwork & Security -> Security Groups -> Inbound Y da click en Edit.
  • Crea un puerto TCP Custom 27017, Source: Anywhere, 0.0.0.0/0

8. Prueba tu conexión remota.

Finalmente puedes cerrar tu conexión ssh con tu servidor y probar desde tu computadora personal. Para entrar a tu BD remota de Mongo, solo tienes que ingresar en tu terminal:
$ mongo -u superAdmin -p pass1234 123.45.67.89
Donde 123.45.67.89 es la IP pública de tu servidor.

9. Usando pymongo con tu Servidor MongoDB remoto.

import pymongo
client = pymongo.MongoClient("mongodb://superAdmin:pass1234@123.45.67.89:27017/blog?ssl=false&authSource=admin")
db = client.blog
post = {"autor": "Martin",
        "titulo": "My first blog post!",
        "tags": ["mongodb", "python", "pymongo"]}
posts = db.posts
post_id = posts.insert_one(post).inserted_id
# imprime el id el post recién insertado.print post_id
# imprime el número de elementos en la colección posts.
print posts.count()

Fuentes:
https://docs.mongodb.com/v2.6/tutorial/enable-authentication/
https://docs.mongodb.com/manual/tutorial/configure-linux-iptables-

.


Powered by

http://emiliogomez.com.ar