MongoDB-admin usuario no autorizado


Estoy intentando añadir autorización a mi MongoDB.
Estoy haciendo todo esto en Linux con MongoDB 2.6.1.
Mi mongod.el archivo conf está en el antiguo formato de compatibilidad
(así es como llegó con la instalación).

1) He creado el usuario administrador como se describe aquí en (3)

Http://docs.mongodb.org/manual/tutorial/add-user-administrator /

2) Luego edité mongod.conf descomentando esta línea

auth = true

3) Finalmente reinicié el mongod service y yo tratamos de iniciar sesión con:

/usr/bin/mongo localhost:27017/admin -u sa -p pwd

4) Puedo conectar pero dice esto al conectar.

MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

5) Ahora parece que este sa usuario que he creado no tiene permisos en absoluto.

root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
        "$err" : "not authorized for query on test.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>

¿Cuál es el problema? Repetí todo este procedimiento 3 veces y
Creo que lo hice todo como se especifica en los documentos de MongoDB. Pero no funciona.
Esperaba que este sa usuario estuviera autorizado a hacer cualquier cosa para que
luego puede crear otros usuarios y dales permisos más específicos.

 124
Author: peter.petrov, 2014-05-30

9 answers

También me estaba rascando la cabeza alrededor del mismo problema, y todo funcionó después de configurar el rol para ser root al agregar el primer usuario administrador.

use admin
db.createUser(
  {
    user: "admin",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
);
exit; 

Para una referencia de configuración de autenticación completa, consulte los pasos que he compilado después de horas de investigación en Internet.

 296
Author: s-hunter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-06 13:23:20

Es un poco confuso - creo que tendrá que conceder a sí mismo ReadWrite para consultar una base de datos. Un usuario con dbadmin o useradmin puede administrar la base de datos (incluida la concesión de derechos adicionales), pero no puede realizar consultas o escribir datos.

Así que concédete ReadWrite y deberías estar bien -

Http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite

 29
Author: John Petrone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-30 01:26:54

Tal vez un ejemplo rápido de cómo cambiar un usuario actual sea útil para alguien. Esto es lo que estaba buscando.

Siguiendo el consejo de @ JohnPetrone agregué ReadWrite rol a mi usuario administrador con grantRolesToUser

> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version
 25
Author: Bart C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-04 14:21:12

Puede intentar: Usar el indicador authentic authenticationDatabase ayuda.

mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"
 15
Author: jremi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-22 23:14:58

Sé que esta respuesta llega muy tarde en este hilo, pero espero que la comprueben.

La razón por la que obtiene ese error se basa en el rol específico que le otorgó al usuario, que ya ha recopilado, y sí, darle a ese usuario el rol root resolverá su problema, pero primero debe comprender qué hacen exactamente estos roles antes de otorgarlos a los usuarios.

En el tutorial le otorgó al usuario el rol userAdminAnyDatabase que básicamente le da la capacidad de administrar usuarios de todas sus bases de datos. Lo que intentabas hacer con tu usuario estaba fuera de su definición de rol.

El rol root tiene este rol incluido en su definición, así como readWriteAnyDatabase, dbAdminAnyDatabase y otros roles que lo convierten en un superusuario (básicamente porque puedes hacer cualquier cosa con él).

Puede consultar las definiciones de roles para ver qué roles necesitará darle a los usuarios para completar ciertas tareas. https://docs.mongodb.com/manual/reference/built-in-roles / No es recomendable para hacer que todos sus usuarios super unos:)

 6
Author: el Punch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-16 21:04:01

Además, tenga en cuenta que si su cliente de shell de mongo no se conecta correctamente a la instancia mongod, puede recibir dichos errores de "Permiso denegado".

Asegúrese de que su cliente abre una conexión comprobando el puerto de conexión, pero también que el puerto que está utilizando en mongod no está en uso. Puede establecer un puerto diferente utilizando el parámetro --port <port> tanto en el shell como en el proceso.

 0
Author: Nick Louloudakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-26 14:13:01

Es una pregunta simple.

  1. Es importante que cambie la db de destino NO admin.

Use yoursdb

  1. compruebe su autenticación de base de datos mediante

Mostrar usuarios

  1. Si obtiene un objeto {} vacío que es la pregunta. Solo necesita escribir

Db.CreateUser( { usuario: "yourUser", pwd: "contraseña", roles: ["ReadWrite", " dbAdmin" ] } )

O

Db.grantRolesToUser ('yourUser', [{role: "dbAdmin", db: "yourDB"}])

 0
Author: cocoTW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-27 11:52:30

Tuve un problema similar aquí en un entorno Windows: he instalado Bitnami DreamFactory y también instala otro MongoDB que se inicia en el arranque del sistema. Estaba ejecutando mi MongoDbService (que se inició sin ningún error), pero me di cuenta después de perder mucho tiempo que de hecho me estaba conectando en el Servicio MongoDB de Bitnami. Por favor, eche un vistazo si no hay otra instancia de MongoDB ejecutándose en su servidor.

¡Buena Suerte!

 -1
Author: ibirite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-07 19:39:57

Esto puede ser porque no has establecido noAuth=true en mongodb.conf

# Turn on/off security.  Off is currently the default
noauth = true
#auth = true

Después de configurar esto, reinicie el servicio usando

Servicio mongod restart

 -5
Author: Buminda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-22 05:17:40