MongoDB: il server ha avvisi di avvio `` Il controllo dell'accesso non è abilitato per il database ''


91

Oggi ho installato per la prima volta MongoDB 3.4.1. Ma quando lo avvio e uso la shell MongoDB, mi ha dato questi avvertimenti di seguito:

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]

il mio computer è Microsoft Windows [ version 10.0.14393].



6
Questo è quasi un perfetto duplicato di un'altra domanda. Ti è capitato di averlo già chiesto l'anno scorso con un nome utente diverso? L'unica cosa diversa è il nome utente e la versione di Windows. Vedi: stackoverflow.com/questions/36660117/…
Joseph Ferris

@JosephFerris, Sì, questa è la duplicazione per stackoverflow.com/questions/36660117/… e quella domanda è stata chiusa a causa di questa duplicazione.
Lakmal Vithanage

Risposte:


138

Mongodb v3.4

È necessario eseguire le seguenti operazioni per creare un database sicuro:

Assicurati che l'utente che avvia il processo disponga delle autorizzazioni e che le directory esistano ( /data/dbin questo caso).

1) Avvia MongoDB senza controllo di accesso.

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

2) Connettiti all'istanza.

mongo --port 27017

3) Creare l'utente amministratore (nel database di autenticazione admin) .

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

4) Riavvia l'istanza MongoDB con il controllo degli accessi.

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

5) Connettiti e autenticati come amministratore utente.

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

6) Creare utenti aggiuntivi come necessario per la distribuzione (ad esempio nel database di autenticazione di prova) .

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

7) Connettiti e autenticati come myTester.

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

Fondamentalmente ho appena spiegato la versione breve dei documenti ufficiali qui: https://docs.mongodb.com/master/tutorial/enable-authentication/


1
Mi piace che hai detto, ma solo un problema è che questo: deve passare ogni volta o per una volta. se ogni volta allora come dare con il servizio perché in un server voglio che questo servizio sudo inizi MongoDB?
Suresh Pareek

6
@sureshpareek Puoi configurarlo nel file mongodb.conf se non vuoi passarlo ogni volta, maggiori informazioni qui: docs.mongodb.com/manual/reference/configuration-options/…
basickarl

1
@sureshpareek Nessun problema amico! Controlla qui se vuoi saperne di più: stackoverflow.com/a/42929869/1137669 Spiego un po 'più in dettaglio.
basickarl

Non riesco al primo passaggio. Ero la versione v3.6.5. Lo stesso avviso e si è spento
Wyx

8
Scherzi a parte ragazzi ... Perché non dici di abilitare security.authorizationin mongod.conf??????
Giovanni

-6

È necessario eliminare la vecchia cartella db e ricrearne una nuova. Risolverà il tuo problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.