Gemäß MongoDB BOL
Aktivieren Auth Mit Zugriffskontrolle aktiviert ist , sicherzustellen , dass Sie einen Benutzer mit haben Useradmin oder userAdminAnyDatabase Rolle in der Admin - Datenbank. Dieser Benutzer kann Benutzer und Rollen verwalten, z. B .: Benutzer erstellen, Rollen von Benutzern erteilen oder widerrufen sowie Zollrollen erstellen oder ändern.
Sie können Benutzer erstellen, bevor oder nachdem Sie die Zugriffssteuerung aktiviert haben. Wenn Sie die Zugriffssteuerung aktivieren, bevor Sie einen Benutzer erstellen , stellt MongoDB eine localhost-Ausnahme bereit , mit der Sie einen Benutzeradministrator in der Admin-Datenbank erstellen können. Nach dem Erstellen müssen Sie sich als Benutzeradministrator authentifizieren, um nach Bedarf weitere Benutzer zu erstellen.
Verfahren
Hier ist das folgende Verfahren, mit dem Sie können Enable Auth
. Fügt einer MongoDB-Instanz, die ohne Zugriffssteuerung ausgeführt wird, zunächst einen Benutzeradministrator hinzu und aktiviert dann die Zugriffssteuerung.
mongod --port 27017 --dbpath /data/db1
C:\Program Files\MongoDB\Server\3.6\bin>mongod --auth --port 27017 --dbpath /data/db1
2018-01-02T00:04:21.038-0700 I CONTROL [initandlisten] MongoDB starting : pid=8048 port=27017 dbpath=/data/db1 64-bit host=ACSD140013
2018-01-02T00:04:21.038-0700 I CONTROL [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] db version v3.6.0
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] git version: a57d8e71e6998a2d0afde7edc11bd23e5661c915
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1u-fips 22 Sep 2016
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] allocator: tcmalloc
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] modules: none
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] build environment:
2018-01-02T00:04:21.039-0700 I CONTROL [initandlisten] distmod: 2008plus-ssl
2018-01-02T00:04:21.040-0700 I CONTROL [initandlisten] distarch: x86_64
2018-01-02T00:04:21.040-0700 I CONTROL [initandlisten] target_arch: x86_64
2018-01-02T00:04:21.040-0700 I CONTROL [initandlisten] options: { net: { port: 27017 }, security: { authorization: "enabled" }, storage: { dbPath: "/data/db1" } }
2018-01-02T00:04:21.044-0700 I - [initandlisten] Detected data files in /data/db1 created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-01-02T00:04:21.044-0700 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1508M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2018-01-02T00:04:21.557-0700 I STORAGE [initandlisten] WiredTiger message [1514876661:556397][8048:140720576475904], txn-recover: Main recovery loop: starting at 1/35584
2018-01-02T00:04:21.677-0700 I STORAGE [initandlisten] WiredTiger message [1514876661:676479][8048:140720576475904], txn-recover: Recovering log 1 through 2
2018-01-02T00:04:21.792-0700 I STORAGE [initandlisten] WiredTiger message [1514876661:792524][8048:140720576475904], txn-recover: Recovering log 2 through 2
2018-01-02T00:04:23.008-0700 I CONTROL [initandlisten]
2018-01-02T00:04:23.008-0700 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
2018-01-02T00:04:23.009-0700 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
2018-01-02T00:04:23.010-0700 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten]
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten]
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten] ** WARNING: The file system cache of this machine is configured to be greater than 40% of the total memory. This can lead to increased memory pressure and poor performance.
2018-01-02T00:04:23.011-0700 I CONTROL [initandlisten] See http://dochub.mongodb.org/core/wt-windows-system-file-cache
2018-01-02T00:04:23.012-0700 I CONTROL [initandlisten]
2018-01-02T10:04:23.320+0300 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db1/diagnostic.data'
2018-01-02T10:04:23.322+0300 I NETWORK [initandlisten] waiting for connections on port 27017
2018-01-02T10:05:09.214+0300 I NETWORK [listener] connection accepted from 127.0.0.1:64482 #1 (1 connection now open)
Stellen Sie eine Verbindung zur Instanz her
Verbinden Sie beispielsweise eine mongo
Shell mit der Instanz.
mongo --port 27017
Geben Sie gegebenenfalls zusätzliche Befehlszeilenoptionen an, um die mongo
Shell mit Ihrer Bereitstellung zu verbinden , z --host
.
Erstellen Sie den Benutzeradministrator
Fügen Sie hier in der Admin-Datenbank beispielsweise einen Benutzer mit der userAdminAnyDatabase
Rolle hinzu. Folgendes erstellt beispielsweise den Benutzer myUserAdmin
in der Admin-Datenbank :
> use admin
switched to db admin
> use admin
switched to db admin
> db.createUser(
... {
... user: "mongoadmin",
... pwd: "mongoadmin",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "mongoadmin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
HINWEIS: Die Datenbank, in der Sie den Benutzer erstellen (in diesem Beispiel admin), ist die Authentifizierungsdatenbank des Benutzers. Obwohl sich der Benutzer bei dieser Datenbank authentifizieren würde, kann er Rollen in anderen Datenbanken haben. dh die Authentifizierungsdatenbank des Benutzers schränkt die Berechtigungen des Benutzers nicht ein.
Trennen Sie die mongo
Shell.
Starten Sie die MongoDB-Instanz mit Zugriffskontrolle neu
Starten Sie die mongod
Instanz mit der Befehlszeilenoption --auth oder bei Verwendung einer Konfigurationsdatei mit der Einstellung security.authorization neu .
mongod --auth --port 27017 --dbpath /data/db1
Clients, die eine Verbindung zu dieser Instanz herstellen, müssen sich jetzt als MongoDB
Benutzer authentifizieren . Clients können nur Aktionen ausführen, die von ihren zugewiesenen Rollen bestimmt werden.
Stellen Sie eine Verbindung her und authentifizieren Sie sich als Benutzeradministrator
Mit der mongo
Shell können Sie:
Stellen Sie eine Verbindung zur Authentifizierung her, indem Sie Benutzeranmeldeinformationen eingeben, oder
Stellen Sie zuerst eine Verbindung ohne Authentifizierung her, und geben Sie dann die
Methode db.auth () zur Authentifizierung aus.
So authentifizieren Sie sich während der Verbindung Starten Sie eine mongo
Shell mit den -u <username>, -p <password>, and the --authenticationDatabase <database>
Befehlszeilenoptionen:
C:\Program Files\MongoDB\Server\3.6\bin>mongo --port 27017 -u "mongoadmin" -p "mongoadmin" --authenticationDatabase "admin"
MongoDB shell version v3.6.0
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.6.0
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
2018-01-02T10:05:09.248+0300 I STORAGE [main] In File::open(), CreateFileW for 'H:\\.mongorc.js' failed with Access is denied.
Nach dem Verbinden authentifizieren
Verbinden Sie die mongo
Shell mit mongod
:
mongo --port 27017
Wechseln Sie zur Authentifizierungsdatenbank (in diesem Fall admin) und verwenden Sie die Methode db.auth (,) , um Folgendes zu authentifizieren:
> use admin
switched to db admin
> db.auth("mongoadmin","mongoadmin")
1
>