authentication - usuarios - puerto 27017 mongodb
Cómo asegurar MongoDB con nombre de usuario y contraseña (12)
Quiero configurar la autenticación de nombre de usuario y contraseña para mi instancia de MongoDB, de modo que cualquier acceso remoto solicite el nombre de usuario y la contraseña. Probé el tutorial del sitio de MongoDB e hice lo siguiente:
use admin
db.addUser(''theadmin'', ''12345'');
db.auth(''theadmin'',''12345'');
Después de eso, salí y corrí mongo de nuevo. Y no necesito contraseña para acceder a ella. Incluso si me conecto a la base de datos de forma remota, no se me solicita el nombre de usuario ni la contraseña.
ACTUALIZACIÓN Aquí está la solución que terminé usando
1) At the mongo command line, set the administrator:
use admin;
db.addUser(''admin'',''123456'');
2) Shutdown the server and exit
db.shutdownServer();
exit
3) Restart mongod with --auth
$ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/
4) Run mongo again in 2 ways:
i) run mongo first then login:
$ ./mongodb/bin/mongo localhost:27017
use admin
db.auth(''admin'',''123456'');
ii) run & login to mongo in command line.
$ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456
El nombre de usuario y la contraseña funcionarán de la misma manera para mongodump
y mongoexport
.
Aquí hay un código javascript para agregar usuarios.
Comience
mongod
con--auth = true
Acceda a la base de datos de administración desde mongo shell y pase el archivo javascript.
mongo admin "NombreDeArchivo.js"
"Filename.js"
// Adding admin user db.addUser("admin_username", " admin_password"); // Authenticate admin user db.auth("admin_username ", " admin_password "); // use database code from java script db = db.getSiblingDB("newDatabase"); // Adding newDatabase database user db.addUser("database_username ", " database_ password ");
Ahora que la adición del usuario está completa, podemos verificar el acceso a la base de datos desde mongo shell
Deberá cambiar a la base de datos en la que desea que esté el usuario (no la base de datos de administración) ...
use mydatabase
Consulte esta publicación para obtener más ayuda ... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/
Esta respuesta es para Mongo 3.2.1 Reference
Terminal 1:
$ mongod --auth
Terminal 2:
db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})
Si desea agregar sin roles (opcional):
db.createUser({user:"admin_name", pwd:"1234", roles:[]})
Para comprobar si está autenticado o no:
db.auth("admin_name", "1234")
debería darte:
1
otra cosa
Error: Authentication failed.
0
Estos pasos me han funcionado:
- escribe mongod --port 27017 en cmd
- a continuación, conecte a mongo shell: mongo --port 27017
- cree el usuario admin: use admin db.createUser ({user: "myUserAdmin", pwd: "abc123", roles: [{role: "userAdminAnyDatabase", db: "admin"}]})
- desconectar mongo shell
- reinicie el mongodb: mongod --auth --port 27017
- iniciar mongo shell: mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
- Para autenticarse después de conectarse, conecte el shell mongo al mongod: mongo --port 27017
- cambie a la base de datos de autenticación: use admin db.auth ("myUserAdmin", "abc123"
La mejor práctica para conectarse a mongoDB como sigue:
Después de la instalación inicial,
use admin
A continuación, ejecute el siguiente script para crear el usuario administrador
db.createUser( { user: "YourUserName", pwd: "YourPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })
El siguiente script creará el usuario administrador para la base de datos.
iniciar sesión en el db.admin usando
mongo -u YourUserName -p YourPassword admin
Después de iniciar sesión, puede crear el número N de la base de datos con la misma credencial de administrador o diferente repitiendo el 1 al 3.
Esto le permite crear diferentes usuarios y contraseñas para las diferentes colecciones que crea en MongoDB
Primero ejecute mongoDB en la terminal usando
mongod
ahora ejecuta mongo shell usa los siguientes comandos
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Reinicie la instancia de MongoDB con control de acceso.
mongod --auth
Ahora autentíquese desde la línea de comando usando
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
Lo leo de
https://docs.mongodb.com/manual/tutorial/enable-authentication/
Primero, elimine el comentario de la línea que comienza con #auth=true
en su archivo de configuración mongod (ruta predeterminada /etc/mongo.conf
). Esto habilitará la autenticación para mongodb.
Luego, reinicie mongodb: sudo service mongod restart
después de crear un nuevo usuario, no olvide grant
permiso de read/write/root
al usuario. puedes probar el
cmd: db.grantRolesToUser(''yourNewUsername'',[{ role: "root", db: "admin" }])
https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
Editar el archivo de configuración de mongo;
sudo nano /etc/mongod.conf
Añade la línea:
security.authorization : enabled
Reiniciar el servicio
sudo service mongod restart
Saludos
mongod
iniciar mongod
con la opción --auth
después de configurar el usuario.
Desde el sitio de MongoDB:
Ejecute la base de datos (proceso mongod) con la opción
--auth
para habilitar la seguridad. Debe haber agregado un usuario a la base de datos de administración antes de iniciar el servidor con--auth
, o agregar el primer usuario desde la interfaz localhost.
Creación de usuarios con contraseña para una base de datos específica para asegurar el acceso a la base de datos:
use dbName
db.createUser(
{
user: "dbUser",
pwd: "dbPassword",
roles: [ "readWrite", "dbAdmin" ]
}
)
Wow tantas respuestas complicadas / confusas aquí.
Esto es a partir de v3.4 .
Respuesta corta.
1) Iniciar MongoDB sin control de acceso.
mongod --dbpath /data/db
2) Conectar a la instancia.
mongo
3) Crea el usuario.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Detenga la instancia de MongoDB y vuelva a iniciarla con el control de acceso.
mongod --auth --dbpath /data/db
5) Conectar y autenticar como usuario.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Respuesta larga: lee esto si quieres entender correctamente.
Es realmente simple Me quedo con lo siguiente https://docs.mongodb.com/manual/tutorial/enable-authentication/
Si desea obtener más información sobre lo que realmente hacen los roles, lea más aquí: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Iniciar MongoDB sin control de acceso.
mongod --dbpath /data/db
2) Conectar a la instancia.
mongo
3) Crear el administrador de usuarios. Lo siguiente crea un administrador de usuarios en la base de datos de autenticación del admin
. El usuario es un dbOwner
sobre la some_db
datos some_db
y NO sobre la base de datos de admin
, es importante recordar esto.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
O si desea crear un administrador que sea admin sobre cualquier base de datos:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Detenga la instancia de MongoDB y vuelva a iniciarla con el control de acceso.
mongod --auth --dbpath /data/db
5) Conéctese y autentíquese como administrador de usuarios hacia la base de datos de autenticación del admin
, NO hacia la base de datos de autenticación some_db
. El administrador del usuario se creó en la base de datos de autenticación del admin
, el usuario no existe en la base de datos de autenticación some_db
.
use admin
db.auth("myDbOwner", "abc123")
Ahora está autenticado como dbOwner
en la base de datos some_db
. Así que ahora, si desea leer / escribir / hacer cosas directamente hacia la some_db
datos some_db
, puede cambiarlo.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Más sobre roles: https://docs.mongodb.com/manual/reference/built-in-roles/
Si desea crear usuarios adicionales que no sean administradores de usuarios y que sean usuarios normales, continúe leyendo a continuación.
6) Crea un usuario normal. Este usuario se creará en la base de datos de autenticación some_db
a continuación.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Salga del shell mongo, vuelva a conectarse, autentíquese como usuario.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})