Ich habe 4 Instanzen von mongodb ausgeführt (set Replika) mit folgenden mongodb.conf
Datei für jede Instanz:Authenticate mongodb Replikatsatzes
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /root/mongodata/log/mongod.log
# Where and how to store data.
storage:
dbPath: /root/mongodata/db1 # also have db2 and so on for rest of the instances
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /root/mongodata/db1/mongod.pid # location of pidfile, different for 4 instances
# network interfaces
net:
port: 30000 #port different for 4 different instances
bindIp: 12.123.321.432(example ip, same for all 4 .conf files)
# security
security:
KeyFile: /path to my keyfile location
# authorization: enabled
#operationProfiling:
replication:
replSetName: testReplica #have this same for all 4
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
I auch eine Schlüsseldatei für die interne Authentifizierung wie folgt erstellt:
openssl rand -base64 756 > <path-to-keyfile>
chmod 400 <path-to-keyfile>
Nachdem alle Instanzen ausgeführt ich mongoShell wie folgt geöffnet:
mongo --host 12.123.321.432 --port 30000
Ich bin in der Lage, die Schale zu öffnen, aber wenn ich versuche, einen Benutzer zu erstellen, erhalte ich die folgende Ausnahme:
2016-12-22T20:55:38.396-0500 E QUERY [thread1] Error: couldn't add user: not authorized on test to execute command { createUser: "root", pwd: "xxx", roles: [ { role: "root", db: "admin" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } :
[email protected]/mongo/shell/utils.js:23:13
[email protected]/mongo/shell/db.js:1230:11
@(shell):1:1
Ich habe versucht, dem Server-Betreiber db Schalt sagt aber nach wie vor nicht autorisierten, habe ich versucht, auch rs.initiate zu laufen () Befehl zum Definieren von primären und sekundären dbs, sagt nicht autorisiert. Ich lese auch, wenn ich die mongod
mit Authentifizierung deaktiviert die interne Authentifizierung über keyfile
wird die rollenbasierte Authentifizierung erzwingen. Was vermisse ich hier und wie würde ich es lösen? Danke im Voraus.
Sie sind fast richtig, aber für Replikat-Set war der Trick, mit leeren 'db'-Ordner zu starten und in' .conf'-Datei sollten Sie nicht den '' keyFile'-Parameter bereitstellen. Sobald Sie 'keyFile' eingeben, wird die interne Authentifizierung + der rollenbasierte Zugriff erzwungen. Starten Sie also ohne 'keyfile' und erstellen Sie die notwendigen Benutzer und starten Sie dann mit' keyFile' erneut, das zur '.conf' Datei hinzugefügt wird. Hinweis: Wenn Sie den 'keyFile'-Parameter angeben, müssen Sie' --auth' nicht verwenden, um die Authentifizierung zu aktivieren. Bitte aktualisieren Sie Ihre Antwort, damit ich als richtige Antwort markieren kann. Vielen Dank! – Gurkha
@Gurkha ja, das ist richtig, Antwort habe aktualisiert, hoffe das hilft dir. – kext