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.
$ 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.
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íneasecurity:
.
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.
iptables
.sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
- Ve a tu Dashboard de ec2: https://console.aws.amazon.com/ec2/
- Luego a
Instances
selecciona tu instancia, muévete hacia abajo para ver el Security Groups de tu instancia. Ejemplo:launch-wizard-4
- Ve a
Network & Security
->Security Groups
->Inbound
Y da click enEdit
. - Crea un puerto TCP Custom 27017, Source: Anywhere, 0.0.0.0/0
8. Prueba tu conexión remota.
$ mongo -u superAdmin -p pass1234 123.45.67.89
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-