Estoy usando la misma cadena de conexión en local y producción. Cuando la cadena de conexión es mongodb://localhost/mydb
¿Cuál es el nombre de usuario y la contraseña? ¿Es seguro mantenerlo de esta manera?
De forma predeterminada, mongodb no tiene un control de acceso habilitado, por lo que no hay un usuario o contraseña predeterminados.
Para habilitar el control de acceso, utilice la opción de la línea de comandos --auth o la configuración del archivo de configuración security.authorization.
Puede usar el siguiente procedimiento o consultar Habilitación de la autenticación en los documentos de MongoDB.
Inicie MongoDB sin control de acceso.
mongod --port 27017 --dbpath /data/db1Conéctese a la instancia.
mongo --port 27017Crear el administrador de usuarios.
use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )Reinicie la instancia de MongoDB con control de acceso.
mongod --auth --port 27017 --dbpath /data/db1Autenticarse como administrador de usuarios.
mongo --port 27017 -u "myUserAdmin" -p "abc123" \ --authenticationDatabase "admin"Además de lo que ya mencionó @Camilo Silva, si quieres dar acceso libre para crear bases de datos, leer, escribir bases de datos, etc, pero no quieres crear un rol de root, puedes cambiar el 3er paso con lo siguiente:
use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )Si ya ha creado el usuario, puede actualizarlo de la siguiente manera:
Primero inicie sesión:
mongo --port 27017 -u "myUserAdmin" -p "abc123" \ --authenticationDatabase "admin"Los permisos de adición:
use admin db.grantRolesToUser( "myUserAdmin", [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] )Para MongoDB anterior a 2.6, el comando para agregar un usuario raíz es addUser (por ejemplo)
db.addUser({user:'admin',pwd:'<password>',roles:["root"]})