105 votes

MongoDB : Le serveur a des avertissements de démarrage ''Le contrôle d'accès n'est pas activé pour la base de données''.

J'ai tout d'abord installé MongoDB 3.4.1 aujourd'hui. Mais quand je le démarre et que j'utilise le shell MongoDB, il me donne les avertissements suivants :

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]

mon ordinateur est sous Microsoft Windows [ version 10.0.14393 ].

2 votes

6 votes

Cette question est presque une réplique parfaite d'une autre question. Auriez-vous déjà posé cette question l'année dernière sous un autre nom d'utilisateur ? La seule chose qui est différente est le nom d'utilisateur et la version de Windows. Voir : stackoverflow.com/questions/36660117/

0 votes

@JosephFerris, Oui, il s'agit d'une duplication pour stackoverflow.com/questions/36660117/ et cette question a été fermée à cause de cette duplication.

159voto

Karl Morrison Points 774

Mongodb v3.4

Vous devez effectuer les opérations suivantes pour créer une base de données sécurisée :

Assurez-vous que l'utilisateur qui démarre le processus a les permissions et que les répertoires existent ( /data/db dans ce cas).

1) Démarrez MongoDB sans contrôle d'accès.

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

2) Connectez-vous à l'instance.

mongo --port 27017

3) Créer l'utilisateur administrateur (dans la base de données d'authentification de l'administrateur) .

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

4) Redémarrez l'instance MongoDB avec le contrôle d'accès.

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

5) Connectez-vous et authentifiez-vous en tant qu'utilisateur administrateur.

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

6) Créez des utilisateurs supplémentaires selon les besoins de votre déploiement. (par exemple, dans la base de données d'authentification des tests) .

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

7) Connectez-vous et authentifiez-vous en tant que myTester.

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

Je n'ai fait qu'expliquer la version courte de la documentation officielle ici : https://docs.mongodb.com/master/tutorial/enable-authentication/

1 votes

Je fais comme vous l'avez dit mais il y a juste un problème : ce --auth doit passer à chaque fois ou pour une seule fois. Si c'est à chaque fois, comment faire avec le service parce que dans un serveur, je veux que ce sudo service MongoDB démarre ?

7 votes

@sureshpareek Vous pouvez configurer ceci dans le fichier mongodb.conf si vous ne voulez pas le passer à chaque fois, plus d'info ici : docs.mongodb.com/manual/reference/configuration-options/

1 votes

@sureshpareek Pas de problème mec ! Regarde ici si tu veux en savoir plus : stackoverflow.com/a/42929869/1137669 Je l'explique un peu plus en détail.

10voto

Fabien Haddadi Points 388

OMG, quelle usine à gaz, cette réponse au sommet !

Tout ce que vous avez à faire, c'est de :

  1. Modifiez votre configuration, par exemple C:\Program Files\MongoDB\Server\4.4\bin\mongodb.cfg
  2. Tournez le security: authorization: a enabled comme illustré ; notez que cette sous-entrée peut être complètement absente. Il suffit alors de l'ajouter.
  3. Redémarrez votre MongoDB Server du service Windows Services panneau de contrôle.

enter image description here

Évidemment, si, à la suite de cela, vous mettez en place une politique basée sur les rôles de lecture/lecture/écriture, cela aura beaucoup plus de sens.

Réf : https://docs.mongodb.com/manual/tutorial/configure-scram-client-authentication/

Je viens de tester cela en utilisant phpunit, cela fonctionne comme prévu.

0voto

Vous pouvez créer un utilisateur admin ou un autre rôle . l'exécuter sur le shell mongo.

db.createUser({user: "username", pwd: "password", roles: ["dbAdmin"]})

si vous obtenez l'erreur SCRAM-SHA-256error, vous pouvez définir le mécanisme SHA-1.

db.createUser({user: "username", pwd: "password", roles: ["dbAdmin"], mechanisms: ["SCRAM-SHA-1"]})

-12voto

Parag Points 3

Vous devez supprimer votre ancien dossier db et en recréer un nouveau. Cela résoudra votre problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X