MongoDB: o servidor tem avisos de inicialização '' O controle de acesso não está habilitado para o banco de dados ''

89

Eu primeiro instalei o MongoDB 3.4.1 hoje. Mas quando eu o inicio e uso o shell do MongoDB, ele me dá os seguintes avisos:

C:\Users\hs>"C:\Program Files\MongoDB\Server\3.4\bin\mongo.exe
MongoDB shell version v3.4.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.1
Server has startup warnings:
2017-01-12T21:19:46.941+0800 I CONTROL  [initandlisten]
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten]

meu computador é o Microsoft Windows [ version 10.0.14393].

alewu
fonte
2
Possível duplicata do MongoDB: o servidor tem avisos de inicialização
Joseph Ferris
6
Esta é uma duplicata quase perfeita de outra pergunta. Por acaso você já perguntou no ano passado com um nome de usuário diferente? A única coisa diferente é o nome de usuário e a versão do Windows. Consulte: stackoverflow.com/questions/36660117/…
Joseph Ferris
@JosephFerris, Sim, esta é uma duplicação para stackoverflow.com/questions/36660117/… e essa questão foi encerrada por causa desta duplicação.
Lakmal Vithanage

Respostas:

137

Mongodb v3.4

Você precisa fazer o seguinte para criar um banco de dados seguro:

Certifique-se de que o usuário que está iniciando o processo tenha permissões e que os diretórios existam ( /data/dbneste caso).

1) Inicie o MongoDB sem controle de acesso.

mongod --port 27017 --dbpath /data/db

2) Conecte-se à instância.

mongo --port 27017

3) Crie o administrador do usuário (no banco de dados de autenticação do administrador) .

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

4) Reinicie a instância do MongoDB com controle de acesso.

mongod --auth --port 27017 --dbpath /data/db

5) Conecte-se e autentique-se como administrador do usuário.

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

6) Crie usuários adicionais conforme necessário para sua implantação (por exemplo, no banco de dados de autenticação de teste) .

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

7) Conecte-se e autentique-se como myTester.

mongo --port 27017 -u "myTester" -p "xyz123" --authenticationDatabase "test"

Basicamente, acabei de explicar a versão resumida dos documentos oficiais aqui: https://docs.mongodb.com/master/tutorial/enable-authentication/

basickarl
fonte
1
Eu gosto de você, mas apenas um problema é que isso --auth tem que passar todas as vezes ou por uma vez. se toda vez então como dar com serviço porque em um servidor eu quero gostar desse serviço sudo iniciar MongoDB?
suresh pareek de
5
@sureshpareek Você pode configurar isso no arquivo mongodb.conf se não quiser passar todas as vezes, mais informações aqui: docs.mongodb.com/manual/reference/configuration-options/…
basickarl
1
@sureshpareek Sem problemas, cara! Clique aqui se quiser saber mais: stackoverflow.com/a/42929869/1137669 Eu explico um pouco mais detalhadamente.
basickarl
Eu falhei na primeira etapa. Estava na versão v3.6.5. O mesmo aviso e desligou
wyx
7
Sério galera ... Por que vocês não dizem para habilitar security.authorizationno mongod.conf??????
João
-5

Você precisa excluir sua pasta db antiga e recriar uma nova. Isso resolverá seu problema.

Parag
fonte