Frage MongoDB - Admin Benutzer nicht autorisiert


Ich versuche, meiner MongoDB eine Autorisierung hinzuzufügen.
Ich mache das alles unter Linux mit MongoDB 2.6.1.
Meine mongod.conf Datei hat das alte Kompatibilitätsformat
(So ​​kam es mit der Installation).

1) Ich habe Admin Benutzer wie hier in (3) beschrieben erstellt

http://docs.mongodb.org/manual/tutorial/add-user-administrator/

2) Ich habe dann mongod.conf bearbeitet, indem ich diese Zeile auskommentiert habe

auth = true

3) Endlich habe ich den mongod-Dienst neu gestartet und ich habe versucht mich einzuloggen mit:

/usr/bin/mongo localhost:27017/admin -u sa -p pwd

4) Ich kann verbinden, aber es sagt dies beim Verbinden.

MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

5) Jetzt scheint es so sa Benutzer, den ich erstellt habe, hat überhaupt keine Berechtigungen.

root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
        "$err" : "not authorized for query on test.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>

Was ist das Problem? Ich habe diesen ganzen Vorgang dreimal wiederholt und
Ich denke, ich habe alles wie in den MongoDB-Dokumenten angegeben. Aber es funktioniert nicht.
Ich habe das erwartet sa Benutzer dazu berechtigt sein, alles so zu tun
Er kann dann andere Benutzer erstellen und ihnen genauere Berechtigungen erteilen.


118
2018-05-29 21:54


Ursprung


Antworten:


Ich kratzte mich auch am selben Problem, und alles funktionierte, nachdem ich die Rolle als root beim Hinzufügen des ersten Admin-Benutzers festgelegt hatte.

use admin
db.createUser(
  {
    user: "admin",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
);
exit; 

Eine vollständige Referenz zur Authentifizierungseinstellung finden Sie unter Schritte Ich habe nach Stunden der Recherche über das Internet zusammengestellt.


279
2018-04-06 13:23



Es ist ein wenig verwirrend - ich glaube, Sie müssen sich selbst readWrite gewähren, um eine Datenbank abzufragen. Ein Benutzer mit dbadmin oder useradmin kann die Datenbank verwalten (einschließlich der Gewährung zusätzlicher Rechte), kann jedoch keine Abfragen ausführen oder Daten schreiben.

also gönnen Sie sich readWrite und Sie sollten in Ordnung sein -

http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite


29
2018-05-30 01:26



Vielleicht ist ein schnelles Beispiel, wie man einen aktuellen Benutzer ändert, für jemanden hilfreich. Genau danach habe ich gesucht.

Nach dem Rat von @JohnPetrone habe ich hinzugefügt lesen Schreiben Rolle für meinen Admin-Benutzer mit grantRolesToUser 

> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version

25
2018-05-04 14:21



Sie können versuchen: Die Verwendung des Flags --authenticationDatabase hilft.

mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"

14
2018-02-22 23:14



Ich weiß, dass diese Antwort in diesem Thread sehr spät kommt, aber ich hoffe, dass du es dir anschaust.

Der Grund, warum Sie diesen Fehler erhalten, basiert auf der spezifischen Rolle, die Sie dem Benutzer gewährt haben, die Sie bisher gesammelt haben, und auf der Angabe, dass dieser Benutzer die Rolle erhält root wird Ihr Problem lösen, aber Sie müssen zuerst verstehen, was diese Rollen genau tun, bevor Sie sie Benutzern zuweisen.

Im Tutorial haben Sie dem Benutzer den userAdminAnyDatabase Rolle, die dem Benutzer grundsätzlich die Möglichkeit gibt, Benutzer aller Datenbanken zu verwalten. Was Sie mit Ihrem Benutzer versucht haben, war außerhalb seiner Rollendefinition.

Das root Rolle hat diese Rolle sowohl in der Definition als auch in der readWriteAnyDatabase, dbAdminAnyDatabase und andere Rollen machen es zu einem Superuser (im Grunde, weil Sie alles damit machen können).

Sie können die Rollendefinitionen überprüfen, um zu sehen, welche Rollen Sie benötigen, um Benutzern die Ausführung bestimmter Aufgaben zu ermöglichen. https://docs.mongodb.com/manual/reference/built-in-roles/Es ist nicht ratsam, alle Ihre Benutzer zu super zu machen :)


3
2017-09-16 21:04



Beachten Sie außerdem, dass Ihr Mongo - Shell - Client nicht ordnungsgemäß mit dem Server verbunden werden kann mongod Beispielsweise können Sie solche Fehler "Berechtigung verweigert" erhalten.

Stellen Sie sicher, dass Ihr Client eine Verbindung öffnet, indem Sie den Verbindungsport, aber auch den verwendeten Port überprüfen mongod wird nicht verwendet. Sie können einen anderen Anschluss festlegen, indem Sie die Taste drücken --port <port> Parameter in der Shell und im Prozess.


0
2017-08-26 14:13



Ich hatte hier ein ähnliches Problem in einer Windows-Umgebung: Ich habe Bitnami DreamFactory installiert und es installiert auch einen anderen MongoDb, der beim Systemstart gestartet wird. Ich habe meinen MongoDbService gestartet (der ohne Fehler gestartet wurde), aber ich merkte, dass ich nach dem Verlust von Zeit tatsächlich eine Verbindung mit dem MongoDb-Dienst von Bitmami hergestellt habe. Bitte schauen Sie, ob auf Ihrem Server keine weitere mongoDB-Instanz läuft.

Viel Glück!


-2
2018-02-07 19:39



Ich hatte das gleiche Problem. Während ich mongod lief, nahm ich raus --auth und es stellte eine vorübergehende Lösung zur Verfügung.


-3
2018-02-17 06:04



Dies kann daran liegen, dass Sie noAuth = true in mongodb.conf nicht gesetzt haben

# Turn on/off security.  Off is currently the default
noauth = true
#auth = true

Nach dem Neustart starten Sie den Dienst mit

Service Mongod Neustart


-4
2018-03-22 05:17