Instrucciones para añadir un usuario a una base de datos mongo para mongo_orm

Usted no quiere que su aplicación web acceda a la base de datos utilizando su usuario administrador de la base de datos. Además, quiere que sólo acceda a uno específico base de datos - tal vez usted tiene bases de datos adicionales que se ejecutan en su instancia de mongo.

Requisitos previos:

mongo_orm espera la configuración de la base de datos como variables de entorno o como un archivo config/database.yml en su proyecto.

El archivo config/database.yml tiene el siguiente aspecto:

database_url: mongodb://janet:test@hostname:27017
nombre_de_base_de_datos: dbname

y 27017 es el número de puerto por defecto de mongo - si lo pones a otra cosa, cámbialo.

el usuario es "janet"

y la contraseña es "test" en este ejemplo.

Creación de un nuevo usuario en la instancia de mongo, utilizando la consola de mongo

Inicie sesión en su instancia de mongo. Ejecute el comando mongo:

mongo

(Asumo que tu instancia de mongo se vincula a localhost, en el puerto por defecto).

Esto le dará la consola de mongo.

Importante: ¡tiene que cambiar a la base de datos del administrador para autenticarse!

usar admin

db.auth("admin","")

cambie por la contraseña de administrador que haya establecido. Por favor, ignora la estúpida costumbre de WordPress de cambiar las comillas. Se supone que todas estas son comillas dobles normales.

Es importante: Haga no ¡cambiar la base de datos a la base de datos de destino para crear el nuevo usuario! ¡Permanezca en la base de datos del administrador!

db.createUser(

{

usuario: "janet",

pwd: "test",

roles: [{ rol: "readWrite", db: "dbname" }],

passwordDigestor: "servidor",

mecanismos: [“SCRAM-SHA-1″,”SCRAM-SHA-256”]

}

)

Nota: ¡se requieren ambos mecanismos! Si sólo especifica SCRAM-SHA-256, mongo orm no podrá conectarse.

passwordDigestor DEBE ser "servidor". Es no puede sea verdadero. Tenga en cuenta que parece haber una diferencia entre la consola de mongo y la API de mongo. (en la API de mongo se usaría digestPassword: true

esto le dará al usuario janet, con el password test el rol readWrite en dbname.

Lea más sobre las funciones aquí.

eliminar un usuario

usar admin

db.dropUser("janet")

Depuración

https://github.com/Studio3T/robomongo/issues/1041

El Robo T3 no parece ser capaz de crear usuarios correctamente, utilice mi método de la consola de arriba.

(No obstante, es capaz de crear bases de datos).

imagen

como dice el diálogo, no se puede utilizar digestPassword a través de Robo T3 o de la consola de Mongo. Utilice passwordDigestor: "server" en su lugar. En cualquier caso, el Robo T3 no parece ser capaz de crear los usuarios correctamente - utilice la consola.

db.serverStatus()

si este comando le da:

> db.serverStatus()

{

"ok" : 0,

"errmsg" : "command serverStatus requires authentication",

"código" : 13,

"codeName" : "No autorizado"

}

Entonces no está conectado - mostrará una larga lista de información sobre su servidor cuando esté conectado.

Se autentifican demasiados usuarios

2019-02-09T13:53:09.972+0000 E QUERY [js] Error: no se ha podido añadir un usuario: hay demasiados usuarios autentificados

_getErrorWithCode@src/mongo/shell/utils.js:25:13

DB.prototype.createUser@src/mongo/shell/db.js:1491:15

Si empiezas a autenticarte como otros usuarios para probar el inicio de sesión, esto sucederá. sal de la consola, inicia sesión de nuevo y autentifica sólo una vez como administrador antes de crear nuevos usuarios.

Fallo de autentificación

Mensaje: 'Dominio: 1, código: 11, Autenticación fallida".

Obtendrá este código de error de mongo orm si éste no puede autenticarse. Resiste el impulso de usar simplemente la base de datos como administrador. Vuelva a leer la información que he dado aquí. Asegúrese de que:

  • se crea el nuevo usuario mediante la consola de mongo
  • ha especificado SCRAM-SHA-1
  • el usuario ha sido creado estando en la base de datos del administrador ("usar admin" !!)
  • has configurado los roles correctamente