puerto - MongoDB-usuario administrador no autorizado
roles usuarios mongodb (9)
Estoy tratando de agregar autorización a mi MongoDB.
Estoy haciendo todo esto en Linux con MongoDB 2.6.1.
Mi archivo mongod.conf está en el antiguo formato de compatibilidad
(Así es como vino la instalación).
1) Creé el usuario administrador como se describe aquí en (3)
http://docs.mongodb.org/manual/tutorial/add-user-administrator/
2) Luego edité mongod.conf al descomentar esta línea
auth = true
3) Finalmente, reinicié el servicio mongod e intenté iniciar sesión con:
/usr/bin/mongo localhost:27017/admin -u sa -p pwd
4) Puedo conectar pero dice esto al conectarme.
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 usuario sa
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 usuario estuviera autorizado a hacer cualquier cosa para que
luego puede crear otros usuarios y otorgarles permisos más específicos.
Además, tenga en cuenta que si su cliente mongo shell no se conecta correctamente a la instancia de mongod
, puede recibir dichos errores "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 --port <port>
tanto en el shell como en el proceso.
Es un poco confuso: creo que deberá otorgarse readWrite para consultar una base de datos. Un usuario con dbadmin o useradmin puede administrar la base de datos (lo que incluye otorgarle derechos adicionales) pero no puede realizar consultas ni escribir datos.
así que concédete readwrite y deberías estar bien,
http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite
Esto puede deberse a que 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 reinicio mongod
Puede intentar: Usar el indicador --authenticationDatabase ayuda.
mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"
Sé que esta respuesta llega muy tarde en este hilo, pero espero que la vean.
La razón por la que obtienes ese error se basa en la función específica que le asignaste al usuario, que ya has reunido, y sí, al usuario le corresponde que la root
del rol resolverá tu problema, pero primero debes entender qué hacen exactamente estos roles antes de otorgar ellos a los usuarios.
En el tutorial, otorgó al usuario el rol userAdminAnyDatabase
que básicamente le da al usuario 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
incluye este rol en su definición, así como en readWriteAnyDatabase
, dbAdminAnyDatabase
y otros roles, lo que lo convierte en superusuario (básicamente porque puede hacer algo con él).
Puede consultar las definiciones de roles para ver qué roles necesitará darles a los usuarios para completar ciertas tareas. https://docs.mongodb.com/manual/reference/built-in-roles/ No es recomendable hacer que todos tus usuarios sean súper queridos :)
Tal vez un ejemplo rápido de cómo cambiar a un usuario actual sea útil para alguien. Esto es lo que realmente estaba buscando.
Siguiendo los consejos de @JohnPetrone, readWrite función readWrite a mi usuario administrador con grantRolesToUser
> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version
También me estaba rascando la cabeza con el mismo problema, y todo funcionó después de establecer el rol como root al agregar el primer usuario administrador.
use admin
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
}
);
exit;
Para obtener una referencia de configuración de autenticación completa, consulte los steps que he compilado después de horas de búsqueda en Internet.
Tuve un problema similar aquí en un entorno de Windows: he instalado Bitnami DreamFactory y también instala otro MongoDb que se inicia en el inicio 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!
Yo tuve el mismo problema. Mientras ejecutaba mongod saqué --auth y me proporcionó una solución temporal.