Estoy usando la misma cadena de conexión en local y producción. Cuando la cadena de conexión esmongodb://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 control de acceso habilitado, por lo que no hay un usuario o contraseña predeterminados.
Para habilitar el control de acceso, use la opción de línea de comando --auth
o la configuración del archivo de configuración security.authorization.
Puede utilizar el siguiente procedimiento o consultar Habilitación de autenticación en los documentos de MongoDB.
Inicie MongoDB sin control de acceso.
mongod --port 27017 --dbpath /data/db1
Conéctese a la instancia.
mongo --port 27017
Cree 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/db1
Autentíquese 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" } ] } )
fuente
Para MongoDB anterior a 2.6, el comando para agregar un usuario root es
addUser
(por ejemplo)db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
fuente
db.addUser
. A partir de 2.6 y en la versión actual 3.4.x puede crear un usuario condb.CreateUser
.db.createUser
;) ( docs.mongodb.com/manual/reference/method/db.createUser )Además de las respuestas proporcionadas anteriormente, una opción es seguir el enfoque de 'excepción de host local' para crear el primer usuario si su base de datos ya se inició con control de acceso (
--auth
interruptor). Para hacer eso, necesita tener acceso localhost al servidor y luego ejecutar:mongo use admin db.createUser( { user: "user_name", pwd: "user_pass", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" } ] })
Como se indica en la documentación de MongoDB:
Aquí está el enlace a esa sección de los documentos.
fuente