Instruções para adicionar um usuário a um banco de dados mongo para mongo_orm

Você não quer que sua aplicação web acesse a base de dados usando seu usuário administrador da base de dados. Além disso, você quer que ele acesse apenas uma específica base de dados - talvez você tenha bases de dados adicionais rodando na sua instância mongo.

Pré-requisitos:

mongo_orm espera a configuração da base de dados como variáveis de ambiente ou como um arquivo config/database.yml em seu projeto.

O arquivo config/database.yml tem este aspecto:

base de dados_url: mongodb://janet:test@hostname:27017
nome_da_base de dados: dbname

e 27017 é o número de porta padrão da mongo - se você defini-lo para outra coisa, mude-o.

o usuário é "janet".

e a senha é "teste" neste exemplo.

Criando um novo usuário na instância mongo, usando o console mongo

Faça login na sua instância mongo. Execute o comando mongo:

mongo

(Assumo que a sua instância mongo se liga ao localhost, na porta padrão).

Isto vai dar-lhe a consola mongo.

Importante! você precisa mudar para a base de dados administrativa para se autenticar!

administrar a utilização

db.auth("admin","")

altere para a senha de administrador que você definir. Por favor, ignore o estúpido hábito do WordPress de alterar as aspas. Estas são todas supostamente aspas duplas normais..

Importante: Faça não alterar a base de dados para a base de dados de destino para criar o novo utilizador! Fique na base de dados de administração!

db.createUser(

{

usuário: "Janet",

...de uma pessoa: "teste",

papéis: { role: "readWrite", db: "dbname" }],

senhaDigestor: "servidor",

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

}

)

Nota: ambos os mecanismos são necessários! Se você apenas especificar SCRAM-SHA-256mongo orm não será capaz de fazer o login.

passwordDigestor DEVE ser "servidor". Deve ser não pode seja verdade. Por favor, note que parece haver uma diferença entre o console mongo, e o mongo API. (no mongo API você usaria digestPassword: true

isto dará ao usuário janet, com o teste de senha o papel readWrite no dbname.

Leia mais sobre os papéis aqui.

eliminação de um utilizador

administrar a utilização

db.dropUser("janet")

Depuração

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

Robo T3 não parece ser capaz de criar usuários corretamente, use o meu método de console acima.

(É, no entanto, capaz de criar bases de dados).

imagem

como diz o Diálogo, não se pode usar digestPassword através do Robo T3 ou da Consola Mongo. Use a passwordDigestor: "servidor" em vez disso. Em qualquer caso, o Robo T3 não parece ser capaz de criar os usuários corretamente - use o console.

db.serverStatus()

se este comando te der:

> db.serverStatus()

{

"ok" : 0,

"errmsg" : "comando serverStatus requer autenticação",

"código" : 13,

"codeName" : "Não Autorizado"

}

Então você não está logado - ele irá exibir uma longa lista de informações sobre o seu servidor quando você estiver logado.

Demasiados utilizadores são autenticados

2019-02-09T13:53:09.972+0000 E QUERY [js] Erro: não foi possível adicionar usuário: muitos usuários são autenticados

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

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

Se você começar a se autenticar como outros usuários para testar o login, isso vai acontecer. saia do console, faça o login novamente e se autentique apenas uma vez como administrador antes de criar novos usuários.

A autenticação falhou

Mensagem: 'Domínio: 1, código: 11, A autenticação falhou.

Você receberá este código de erro da mongo orm se a mongo orm não puder se autenticar. Resista ao impulso de simplesmente usar o db como administrador. Releia a informação que eu dei aqui. Assegure-se disso:

  • você cria o novo usuário usando o console mongo
  • você especificou SCRAM-SHA-1
  • o usuário foi criado enquanto estava na base de dados administrativa ("administrar a utilização” !!)
  • você definiu os papéis corretamente