Uma das primeiras tarefas depois de colocar seu servidor de banco de dados MongoDB em funcionamento é configurar seus usuários e bancos de dados. Neste post, veremos alguns dos cenários comuns de criação e configuração de usuários no MongoDB. O gerenciamento de usuários do MongoDB melhorou muito em relação às duas versões anteriores e agora é um modelo de gerenciamento de usuários capaz e funcional. Os usuários podem receber várias funções e as funções podem ser configuradas com os privilégios desejados. Há vários papéis de usuário integrados a serem usados, ou você pode criar seus próprios papéis personalizados.
Os exemplos neste post usam um cliente 2.6.4 e um servidor 2.6.4. Mudanças consideráveis foram feitas no modelo de gerenciamento de usuários de 2.4 para 2.6. Portanto, se você estiver usando um cliente 2.4, muitos dos exemplos deste post não funcionarão para você. Você pode verificar a versão do cliente yoMongoDBodb usando a seguinte sintaxe:
mongo --versão
Adicionando um usuário a um banco de dados
O primeiro passo depois de criar seu usuário é criar o banco de dados do aplicativo:
usar applicationdb;
Depois de criar esse banco de dados, queremos criar o usuário que será usado pela aplicação para gravar nesse banco de dados. Queremos que este usuário tenha privilégios de leitura e gravação no banco de dados:
db.createUser({'user':'appuser', 'pwd':'', roles:['readWrite']});
Às vezes, também queremos adicionar usuários que tenham acesso somente leitura ao banco de dados. Por exemplo, podemos querer adicionar um usuário de análise que tenha acesso somente leitura ao banco de dados:
db.createUser({'user':'analyticsuser', 'pwd':'', roles:['read']});
Agora que os usuários foram criados, vamos tentar conectar como esse usuário no console do MongoDB:
mongo -u 'appuser' -p/applicationdbMongoDB shell version:2.6.4conectando-se a: /applicationdb>
Você deve ter se conectado com sucesso! Observe que “/applicationdb” no final da sintaxe diz ao MongoDB para autenticar o ‘appuser’ no banco de dados ‘applicationdb’.
Adicionando um usuário a vários bancos de dados
Em muitos cenários, precisamos criar vários bancos de dados no servidor. Por exemplo, neste cenário, podemos precisar criar outro banco de dados 'analyticsdb' para armazenar os resultados da análise. O 'analyticsuser' agora precisa de acesso 'readonly' nas permissões 'applicationdb' e 'readWrite' no 'analyticsdb'.
Então, como conseguimos isso? Devemos adicionar o 'analyticsuser' a cada banco de dados? Isso cria um pesadelo de gerenciamento a longo prazo, pois muitos usuários e bancos de dados são adicionados. Felizmente, existe uma solução simples. Podemos centralizar as atribuições de funções para um usuário e armazená-las em um único banco de dados. Nesse cenário, prefiro armazenar essas atribuições no banco de dados ‘admin’, pois é o hub da administração central no servidor, mas você também pode armazená-lo em um banco de dados separado:
use admindb.createUser({user:'analyticsuser', pwd:'', roles:[{'role':'read', 'db':'applicationdb'}, { 'role':' readWrite', 'db':'analyticsdb'}]});
Depois de adicionado, você pode usar 'mostrar usuários' para mostrar os detalhes de seus usuários. Aqui está a aparência do meu banco de dados de administração:
usar admin> mostrar usuários{"_id" :"admin.admin","user" :"admin","db" :"admin","roles" :[{ "role" :"root"," db" :"admin"},{"role" :"restore","db" :"admin"}]}{"_id" :"admin.analyticsuser","user" :"analyticsuser","db":"admin","roles" :[{"role" :"read","db" :"applicationdb"},{"role" :"readWrite","db" :'analyticsdb"}]}>
Agora que nosso usuário foi adicionado, vamos tentar nos conectar a partir do console para verificar a autenticação usando a sintaxe que usamos acima:
mongo -u 'analyticsuser' -p/applicationdb
No entanto, a autenticação falha:
2014-10-06T23:11:42.616+0000 Erro:18 { ok:0.0, errmsg:"auth failed", código:18 } em src/mongo/shell/db.js:1210exception:login falhou pré>A razão é que o 'analyticsuser' é definido no banco de dados 'admin' e não no 'applicationdb'. A maneira de especificar isso é usar o parâmetro ‘–authenticationDatabase’.
mongo -u 'analyticsuser' -p/applicationdb --authenticationDatabase 'admin' Desta vez, o login foi bem-sucedido:
Versão do shell do MongoDB:2.6.4 conectando-se a:/applicationdb Para entender melhor as várias outras funções internas disponíveis no MongoDB, você pode consultar a documentação do MongoDB em Funções internas. Como sempre, se você tiver mais dúvidas, pode entrar em contato conosco em [email protected].