Conformément à MongoDB BOL
Activer l'authentification avec le contrôle d'accès activé, assurez-vous que vous disposez d'un utilisateur avec le rôle userAdmin ou userAdminAnyDatabase dans la base de données d'administration. Cet utilisateur peut administrer des utilisateurs et des rôles tels que: créer des utilisateurs, accorder ou révoquer des rôles aux utilisateurs et créer ou modifier des rôles douaniers.
Vous pouvez créer des utilisateurs avant ou après avoir activé le contrôle d'accès. Si vous activez le contrôle d'accès avant de créer un utilisateur, MongoDB fournit une exception localhost qui vous permet de créer un administrateur utilisateur dans la base de données admin. Une fois créé, vous devez vous authentifier en tant qu'administrateur d'utilisateurs pour créer des utilisateurs supplémentaires selon vos besoins.
Procédure
Voici la procédure suivante à travers laquelle vous pouvez Enable Auth
. Ajoute d'abord un administrateur utilisateur à une instance MongoDB exécutée sans contrôle d'accès, puis active le contrôle d'accès.
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)
Se connecter à l'instance
Par exemple, connectez un mongo
shell à l'instance.
mongo --port 27017
Spécifiez des options de ligne de commande supplémentaires appropriées pour connecter le mongo
shell à votre déploiement, telles que --host
.
Créer l'administrateur utilisateur
Par exemple ici dans la base de données d'administration, ajoutez un utilisateur avec le userAdminAnyDatabase
rôle. Par exemple, ce qui suit crée l'utilisateur myUserAdmin
dans la base de données d'administration :
> 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"
}
]
}
REMARQUE: la base de données dans laquelle vous créez l'utilisateur (dans cet exemple, admin) est la base de données d'authentification de l'utilisateur. Bien que l'utilisateur s'authentifie auprès de cette base de données, l'utilisateur peut avoir des rôles dans d'autres bases de données; c'est-à-dire que la base de données d'authentification de l'utilisateur ne limite pas les privilèges de l'utilisateur.
Déconnectez la mongo
coque.
Redémarrez l'instance MongoDB avec le contrôle d'accès
Redémarrez l' mongod
instance avec l'option de ligne de commande --auth ou, si vous utilisez un fichier de configuration, le paramètre security.authorization .
mongod --auth --port 27017 --dbpath /data/db1
Les clients qui se connectent à cette instance doivent désormais s'authentifier en tant MongoDB
qu'utilisateur. Les clients ne peuvent effectuer que des actions déterminées par les rôles qui leur sont attribués.
Connectez-vous et authentifiez-vous en tant qu'administrateur utilisateur
En utilisant le mongo
shell, vous pouvez:
Connectez-vous avec l'authentification en transmettant les informations d'identification de l'utilisateur, ou
Connectez-vous d'abord sans authentification, puis
lancez la méthode db.auth () pour vous authentifier.
Pour s'authentifier pendant la connexion Démarrez un mongo
shell avec les -u <username>, -p <password>, and the --authenticationDatabase <database>
options de ligne de commande:
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.
Pour s'authentifier après la connexion
Connectez la mongo
coque au mongod
:
mongo --port 27017
Basculez vers la base de données d'authentification (dans ce cas, admin) et utilisez la méthode db.auth (,) pour vous authentifier:
> use admin
switched to db admin
> db.auth("mongoadmin","mongoadmin")
1
>