Why you should use MongoDB

Adicionando autenticação no MongoDB

Você que já implantou algum sistema que utlize MongoDB? Já se deparou com a necessidade de adicionar autenticação? Se não, segue abaixo um how to para criar usuários de maneira simples e correta no MongoDB.

Imaginando que você tenha uma instalação de MongoDB com ReplicaSet configurado, conecte no servidor PRIMARY:

#mongo
rs01:PRIMARY>

Execute os comandos abaixo:

db = db.getSiblingDB(‘admin’)
db.addUser( { user: “admin”,
pwd: “SENHA”,
roles: [ “userAdminAnyDatabase”, “readAnyDatabase”, “clusterAdmin” ] } )

O que você fez acima?

Primeiro você conectou no database admin e em seguida criou um usuário admin, com uma SENHA e deu permissões para que este usuário seja Administrador de qualquer base, que ele leia qualquer base e que ele seja o administrador do cluster.

Agora, para criar um usuário especifico para o banco da sua aplicação, faça:

db = db.getSiblingDB(‘NOME_DA_BASE’)
db.addUser( { user: “USUARIO”,
pwd: “SENHA”,
roles: [ “readWrite”, “dbAdmin” ]
} )

Seguindo a logica, basicamente você conectou na base a ser utilizada, criou o usuário, a senha e deu permissões de Leitura e Escrita e disse também que este usuário é o Administrador deste banco.

E agora, como fazer tudo isso funcionar com ReplicaSet ?

Simples. Primeiro você precisará gerar uma chave de replicação que ficará alocada em todos os servidores que fazem parte do cluster. Para isto, basta rodar o comando abaixo:

$ openssl rand -base64 741 > /etc/mongo.keyFile

Agora, vamos corrigir as permissões deste arquivo, deixando que somente o usuário mongod tenha acesso a ele:

$ chmod 600 /etc/mongo.keyFile
$ chown mongod.mongod /etc/mongo.keyFile

Adicionado este arquivo em todos os servidores do cluster, você terá que habilitar a replicação no arquivo de configuração do MongoDB.

$ vim /etc/mongod.conf

Adicione a linha abaixo no seu arquivo de configuração de todos os servidores

keyFile=/etc/mongo.keyFile

Pronto, agora é só reiniciar todos os nós do cluster e sua autenticação estará configurada.

Para testar, tente se conectar da seguinte maneira:

$ mongo localhost/admin -u admin -p SENHA

Deverá aparecer para você assim:

MongoDB shell version: 2.4.6
Enter password:
connecting to: localhost/admin
rs01:PRIMARY>

Se você tentar se autenticar com o usuário da aplicação, não irá aparecer se o banco é Primario ou Secundario.

$ mongo localhost/BANCO -u USUARIO -p SENHA
MongoDB shell version: 2.4.6
Enter password:
connecting to: localhost/BANCO
>

Mudança de DC com direito a migração do WP

Depois de muito tempo sem publicar por aqui e vendo que estou gastando uma bala com a RackSpace, decidi trocar pela DigitalOcean.

Com planos que vão a partir de 5 dolares/mês, realizei uma migração do meu site e vou descrever nos proximos posts, como realizei o bkp e importação full do WordPress para a DigitalOcean

Arduino

Pra quem curte eletrônica quero dar uma dica sobre uma placa chamada Arduino.

É um projeto de Hardware Open Source de uma placa que permite, de forma muito simples, “programar” o hardware e criar projetos bem interessantes em áreas como robótica e/ou automação residencial.

Comecei a testar e estou gostando bastante. Alguns exemplos de utilização é a possibilidade de você fazer com que a placa monitore a umidade da terra de uma planta que você tem em casa e quando estiver abaixo de determinado valor, a “planta” tweetar que esta com sede. 😛

Eu comprei de uma empresa chamada RLRobotics. O site deles é o rlrobotcs.ind.br

Fica a dica de presente nerd para o fim do ano e para o ano que vem também :)

Abraços

Ricardo

DNSMASQ – Algo util que pode virar um problema.

O Ubuntu a partir da versão 12.04, passou a usar a resolução de nomes (DNS) com o aplicativo dnsmasq, que nada mais faz do que subir um BIND local e fazer cache do DNS, evitando assim que a cada conexão nova, você tenha que verificar se houve alguma alteração no endereço desejavel.

Mas isto passa a ser um problema, quando o serviço dnsmasq começa a cair constantemente, que é o meu caso. Sem escrever absolutamente nenhum log, o serviço simplesmente cai e a para subi-lo novamente, eu tenho ir ao terminal e digitar:


sudo restart NetworkManager

O problema é que em alguns casos, depois de 5 minutos feito isso, a porcaria do serviço caiu novamente. Sendo assim, fui em busca da solução final para desabilitar este serviço.

O procedimento é simples, basta editar o arquivo:

vim /etc/NetworkManager/NetworkManager.conf

E comentar a linha de dns:

#dns=dnsmasq

Agora, para que o Ubuntu volte a atualizar o arquivo /etc/resolv.conf a cada reboot da rede ou nova conexão, você terá que fazer o seguinte:


sudo rm -f /etc/resolv.conf
sudo ln -s /run/resolvconf/interface/NetworkManager /etc/resolv.conf
sudo restart NetworkManager

Basicamente, você irá zerar o conteudo do arquivo /etc/resolv.conf, depois fará um link-simbolico e por ultimo, reiniciará o serviço de redes.

Pronto, acabou os problemas com o DNSMASQ

Ricardo