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.

Author: Prashant Pokhriyal, 2011-02-03

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.

Autenticação Do MongoDB

 98
Author: Alexandru Petrescu, 2017-02-10 18:57:07

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

 53
Author: Shnkc, 2017-09-26 10:35:57
Esta resposta é para Mongo 3.2.1. Referência

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
 41
Author: Sdembla, 2017-02-10 01:14:38

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({})
 41
Author: Karl Morrison, 2017-08-31 09:33:02

Aqui está um código de javascript para adicionar usuários.

  1. Iniciar mongod com --auth = true

  2. 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 ");
    
  3. Agora que a adição do usuário está completa, podemos verificar o acesso ao banco de dados a partir do Mongo shell

 26
Author: Bharadvaj, 2014-08-23 00:10:01

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

 10
Author: alicanozkara, 2016-10-23 11:33:26

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/

 5
Author: PRAVESH kumar, 2017-01-11 19:19:35

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/

 3
Author: Justin Jenkins, 2012-12-04 21:29:38

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" ]
   }
)
 3
Author: Hasib Kamal, 2018-09-13 11:55:04
Estes passos funcionaram comigo.
  1. write mongod -- port 27017 on cmd
  2. depois liga-te à Mongo shell: mongo -- port 27017
  3. Crie a administração do utilizador : usar a administração PO.createUser( { utilizador:"myUserAdmin", pwd: "abc123", Papéis: [{Papel: "useradenydatabase", db:" admin"} ] } )
  4. desligar o Mongo shell
  5. Reinicie o mongodb: mongod -- auth -- port 27017
  6. Iniciar casca de mongo : mongo -- port 27017-u "myUserAdmin" - p "abc123" -- autenticationdatabase "admin"
  7. para autenticar após a ligação, ligue a casca de mongo ao mongod: mongo -- port 27017
  8. mudar para a base de dados de autenticação : usar a administração PO.auth ("myUserAdmin"," abc123 "
 2
Author: Kevin Niasta, 2018-01-18 08:58:03

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" }])

 0
Author: Haisheng Yu, 2017-06-08 09:05:23

As melhores práticas para se ligar ao mongoDB são as seguintes:

  1. Após a instalação inicial,

    use admin

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

  1. Entra no db.administração utilizando

    mongo -u YourUserName -p YourPassword admin

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

 0
Author: Balaji.J.B, 2018-07-22 08:29:58