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).
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