Como proteger o MongoDB com o nome de utilizador e a senha
quero configurar o nome de utilizador e a autenticação de senha para a minha instância do MongoDB, para que qualquer acesso remoto lhe peça o nome de utilizador e a senha. Eu tentei o tutorial do site MongoDB e fiz o seguinte:
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
Depois disso, saí e voltei a correr com o mongo. E não preciso de senha para aceder. Mesmo que eu me conecte à base de dados remotamente, não sou solicitado para o nome de usuário & senha.
UPDATE Aqui está a solução que acabei por encontrar utilizar
1) At the mongo command line, set the administrator:
use admin;
db.addUser('admin','123456');
2) Shutdown the server and exit
db.shutdownServer();
exit
3) Restart mongod with --auth
$ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/
4) Run mongo again in 2 ways:
i) run mongo first then login:
$ ./mongodb/bin/mongo localhost:27017
use admin
db.auth('admin','123456');
ii) run & login to mongo in command line.
$ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456
o nome de utilizador e a senha funcionarão da mesma forma para mongodump
e mongoexport
.
12 answers
Tem de iniciar mongod
com a opção --auth
depois de configurar o utilizador.
Do sítio MongoDB:
Execute a base de dados (processo mongod) com a opção
--auth
Para activar seguranca. Você deve ter adicionado um usuário ao db de administração antes iniciar o servidor com--auth
, ou adicionar o primeiro utilizador do interface localhost.
Primeiro, des-comente a linha que começa por #auth=true
no seu ficheiro de configuração do mongod (localização por omissão /etc/mongo.conf
). Isto irá permitir a autenticação do mongodb.
Então, reinicie mongodb : sudo service mongod restart
Terminal 1:
$ mongod --auth
Terminal 2:
db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})
Se quiser adicionar sem papéis (opcional):
db.createUser({user:"admin_name", pwd:"1234", roles:[]})
Para verificar se está autenticado ou não:
db.auth("admin_name", "1234")
Deve dar-te:
1
Else:
Error: Authentication failed.
0
Tantas respostas complicadas / confusas aqui.
Isto é a partir de v3. 4 .
Resposta curta.Iniciar MongoDB sem controlo de acesso.
mongod --dbpath /data/db
2) Conecte-se à instância.
mongo
3) Criar o utilizador.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
Parem a instância MongoDB e comecem de novo com o controlo de acesso.
mongod --auth --dbpath /data/db
5) Ligar e autenticar como utilizador.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Resposta longa: leia isto se quiser compreendo perfeitamente.
É muito simples. Eu mudo o seguinte. https://docs.mongodb.com/manual/tutorial/enable-authentication/se você quiser saber mais sobre o que os papéis realmente fazem leia mais aqui: https://docs.mongodb.com/manual/reference/built-in-roles/
Iniciar MongoDB sem controlo de acesso.
mongod --dbpath /data/db
2) Conecte-se à instância.
mongo
3) Criar o administrador do utilizador. A a seguir cria um administrador de utilizador na base de dados de autenticação admin
. O utilizador é um dbOwner
sobre a base de Dados some_db
e não sobre a base de Dados admin
, isto é importante de recordar.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Ou se quiser criar um administrador que seja administrador em qualquer base de Dados:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Parem a instância MongoDB e comecem de novo com o controlo de acesso.
mongod --auth --dbpath /data/db
5) Ligar e autenticar como administrador do utilizador para a base de dados de autenticação admin
, Não para a base de dados de autenticação some_db
. o administrador do utilizador foi criado na base de dados de autenticação admin
, O Utilizador não existe na base de dados de autenticação some_db
.
use admin
db.auth("myDbOwner", "abc123")
agora está autenticado como um dbOwner
sobre a base de Dados some_db
. Então agora se você deseja ler/escrever / fazer coisas diretamente para a base de Dados some_db
Você pode mudar para ela.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Mais sobre papéis: https://docs.mongodb.com/manual/reference/built-in-roles/
se você deseja fazer Usuários adicionais que não são administradores de usuário e que são apenas usuários normais continuar a ler abaixo.
6) criar um utilizador normal. Este utilizador será criado na base de dados de autenticação some_db
abaixo.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) saia da linha de comandos mongo, volte a ligar-se, autentique-se como utilizador.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Aqui está um código de javascript para adicionar usuários.
Iniciar
mongod
com--auth = true
-
Acesse a base de dados de administração da Mongo shell e passe o ficheiro javascript.
Nome de ficheiro do administrador do Mongo.js "
" Nome do ficheiro.js "
// Adding admin user db.addUser("admin_username", " admin_password"); // Authenticate admin user db.auth("admin_username ", " admin_password "); // use database code from java script db = db.getSiblingDB("newDatabase"); // Adding newDatabase database user db.addUser("database_username ", " database_ password ");
Agora que a adição do usuário está completa, podemos verificar o acesso ao banco de dados a partir do Mongo shell
Https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
Editar o ficheiro de configuração do mongo;
sudo nano /etc/mongod.conf
Adicione a linha:
security.authorization : enabled
Reiniciar o serviço
sudo service mongod restart
Relativamente a
O mongoDB da primeira corrida no terminal usando
mongod
Execute agora a linha de comandos mongo use os seguintes comandos
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Reinicie a instância MongoDB com controlo de acesso.
mongod --auth
Autentique-se agora a partir da linha de comandos usando
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
Eu li de
Https://docs.mongodb.com/manual/tutorial/enable-authentication/
Terá de mudar para a base de dados em que quer o utilizador (não para o db administrativo) ...
use mydatabase
Veja este post para mais ajuda ... http://learnmongo.com/posts/quick-tip-mongodb-users/
Criação do utilizador com senha para uma base de dados específica para garantir o acesso à base de dados :
use dbName
db.createUser(
{
user: "dbUser",
pwd: "dbPassword",
roles: [ "readWrite", "dbAdmin" ]
}
)
- write mongod -- port 27017 on cmd
- depois liga-te à Mongo shell: mongo -- port 27017
- Crie a administração do utilizador : usar a administração PO.createUser( { utilizador:"myUserAdmin", pwd: "abc123", Papéis: [{Papel: "useradenydatabase", db:" admin"} ] } )
- desligar o Mongo shell
- Reinicie o mongodb: mongod -- auth -- port 27017
- Iniciar casca de mongo : mongo -- port 27017-u "myUserAdmin" - p "abc123" -- autenticationdatabase "admin"
- para autenticar após a ligação, ligue a casca de mongo ao mongod: mongo -- port 27017
- mudar para a base de dados de autenticação : usar a administração PO.auth ("myUserAdmin"," abc123 "
Depois de criar um novo utilizador, por favor não se esqueça de grant
read/write/root
Permissão para o usuário. pode tentar o
cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])
As melhores práticas para se ligar ao mongoDB são as seguintes:
-
Após a instalação inicial,
use admin
-
Execute então o seguinte programa para criar o utilizador de administração
db.createUser( { user: "YourUserName", pwd: "YourPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })
O seguinte programa irá criar o utilizador administrativo para o DB.
-
Entra no db.administração utilizando
mongo -u YourUserName -p YourPassword admin
Após o login, você pode criar N número da base de dados com a mesma credencial de administração ou diferente por repetindo o 1 para 3.
Isto permite-lhe criar um utilizador e uma senha diferentes para a colecção diferente que está a criar no MongoDB