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?
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?
Respuestas:
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" } ]
}
)
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"]})
db.addUser
. A partir de 2.6 y en la versión actual 3.4.x puede crear un usuario con db.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:
La excepción localhost le permite habilitar el control de acceso y luego crear el primer usuario en el sistema. Con la excepción de localhost, después de habilitar el control de acceso, conéctese a la interfaz de localhost y cree el primer usuario en la base de datos de administración. El primer usuario debe tener privilegios para crear otros usuarios, como un usuario con el rol userAdmin o userAdminAnyDatabase. Las conexiones que utilizan la excepción localhost solo tienen acceso para crear el primer usuario en la base de datos de administración.
Aquí está el enlace a esa sección de los documentos.