MongoDB: el servidor tiene advertencias de inicio '' El control de acceso no está habilitado para la base de datos ''


89

Primero instalé MongoDB 3.4.1 hoy. Pero cuando lo inicio y uso el shell MongoDB, me dio estas advertencias a continuación:

C:\Users\hs>"C:\Program Files\MongoDB\Server\3.4\bin\mongo.exe
MongoDB shell version v3.4.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.1
Server has startup warnings:
2017-01-12T21:19:46.941+0800 I CONTROL  [initandlisten]
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten]

mi computadora es Microsoft Windows [ version 10.0.14393].



6
Este es un duplicado casi perfecto de otra pregunta. ¿Has preguntado ya este último año con un nombre de usuario diferente? Lo único diferente es el nombre de usuario y la versión de Windows. Ver: stackoverflow.com/questions/36660117/…
Joseph Ferris

@JosephFerris, Sí, esto es una duplicación para stackoverflow.com/questions/36660117/… y esa pregunta se ha cerrado debido a esta duplicación.
Lakmal Vithanage

Respuestas:


137

Mongodb v3.4

Debe hacer lo siguiente para crear una base de datos segura:

Asegúrese de que el usuario que inicia el proceso tenga permisos y que los directorios existan ( /data/dben este caso).

1) Inicie MongoDB sin control de acceso.

mongod --port 27017 --dbpath /data/db

2) Conéctese a la instancia.

mongo --port 27017

3) Cree el administrador de usuarios (en la base de datos de autenticación del administrador) .

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

4) Reinicie la instancia de MongoDB con control de acceso.

mongod --auth --port 27017 --dbpath /data/db

5) Conéctese y autentíquese como administrador de usuarios.

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

6) Cree usuarios adicionales según sea necesario para su implementación (por ejemplo, en la base de datos de autenticación de prueba) .

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

7) Conéctese y autentíquese como myTester.

mongo --port 27017 -u "myTester" -p "xyz123" --authenticationDatabase "test"

Básicamente, acabo de explicar la versión corta de los documentos oficiales aquí: https://docs.mongodb.com/master/tutorial/enable-authentication/


1
Me gusta lo que dijiste, pero solo un problema es que esto --auth tiene que pasar cada vez o por una vez. si siempre, entonces, ¿cómo dar con el servicio porque en un servidor quiero que me guste este sudo service MongoDB start?
suresh pareek

5
@sureshpareek Puede configurar esto en el archivo mongodb.conf si no desea pasarlo cada vez, más información aquí: docs.mongodb.com/manual/reference/configuration-options/…
basickarl

1
@sureshpareek ¡No hay problema, hombre! Marque aquí si quiere saber más al respecto: stackoverflow.com/a/42929869/1137669 Lo explico con un poco más de detalle.
basickarl

Fallo en el primer paso. Era la versión v3.6.5. La misma advertencia y se apaga.
wyx

7
En serio chicos ... ¿Por qué no dicen para que el security.authorizationen mongod.conf??????
Juan

-5

Debe eliminar su carpeta db anterior y volver a crear una nueva. Resolverá tu problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.