Instructies voor het toevoegen van een gebruiker aan een mongo database voor mongo_orm
Je wilt niet dat je web applicatie toegang krijgt tot de database via je database admin gebruiker. Bovendien wil je dat het alleen toegang heeft tot één specifiek database - misschien heb je extra databases draaien in je mongo instantie.
Vereisten:
mongo_orm verwacht de database configuratie als omgevingsvariabelen of als een bestand config/database.yml in uw project.
Het config/database.yml bestand ziet er als volgt uit:
database_url: mongodb://janet:test@hostname:27017
database_naam: dbnaam
en 27017 is het standaard poortnummer van mongo - als je het op iets anders instelt, verander het dan.
gebruiker is "janet"
en wachtwoord is "test" in dit voorbeeld.
Een nieuwe gebruiker aanmaken op de mongo-instance, met de mongo console
Log in op je mongo instance. Voer het commando mongo:
mongo
(Ik neem aan dat je mongo instantie bindt aan localhost, op de standaard poort).
Dit zal je de mongo console geven.
Belangrijk! Je moet naar de admin database gaan om je te authenticeren!
gebruik admin
db.auth("admin","")
verander in het admin wachtwoord dat je hebt ingesteld. Negeer de stomme gewoonte van WordPress om de aanhalingstekens te veranderen. Dit horen allemaal normale dubbele aanhalingstekens te zijn.
Belangrijk: Doe niet verander de database naar de doel database om de nieuwe gebruiker aan te maken! Blijf in de admin database!
db.createUser(
{
gebruiker: "janet",
pwd: "test",
rollen: [{ rol: "readWrite", db: "dbname" }],
passwordDigestor: "server",
mechanismen: [“SCRAM-SHA-1″,”SCRAM-SHA-256”]
}
)
Opmerking: beide mechanismen zijn vereist! Als u alleen SCRAM-SHA-256 specificeertzal mongo orm niet in staat zijn om in te loggen.
passwordDigestor MOET "server" zijn. Het is kan niet waar zijn. Merk op, dat er een verschil lijkt te zijn tussen mongo console, en mongo API. (in de mongo API zou je digestPassword: true gebruiken
dit zal de gebruiker janet, met het wachtwoord test de lees-schrijf rol geven op dbname.
Lees hier meer over de rollen.
een gebruiker verwijderen
gebruik admin
db.dropUser("janet")
Debuggen
https://github.com/Studio3T/robomongo/issues/1041
Robo T3 lijkt niet in staat te zijn om gebruikers goed aan te maken, gebruik mijn console methode hierboven.
(Het is echter wel in staat databanken aan te leggen).
zoals de Dialoog zegt, kun je niet gebruiken digestPassword via Robo T3 of de Mongo Console. Gebruik in plaats daarvan passwordDigestor: "server" in plaats daarvan. In ieder geval, Robo T3 lijkt niet in staat te zijn om de gebruikers goed te creëren - gebruik de console.
db.serverStatus()
als dit commando je geeft:
> db.serverStatus()
{
"ok" : 0,
"errmsg" : "opdracht serverStatus vereist authentificatie",
"code" : 13,
"codeName" : "Niet toegestaan"
}
Dan bent u niet ingelogd - het zal een lange lijst met informatie over uw server tonen als u ingelogd bent.
Te veel gebruikers zijn geauthenticeerd
2019-02-09T13:53:09.972+0000 E QUERY [js] Fout: kon gebruiker niet toevoegen: te veel gebruikers zijn geauthenticeerd
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1491:15
Als je begint te authenticeren als andere gebruikers om de login te testen, zal dit gebeuren. verlaat de console, log opnieuw in, en authenticeer slechts eenmaal als admin alvorens nieuwe gebruikers aan te maken.
Authenticatie mislukt
Bericht: Domein: 1, code: 11, Authenticatie mislukt.
Je krijgt deze foutcode van mongo orm als mongo orm zich niet kan authenticeren. Weersta de impuls om de db gewoon als admin te gebruiken. Herlees de informatie die ik hier gegeven heb. Zorg ervoor dat:
- je maakt de nieuwe gebruiker aan via de mongo console
- u hebt SCRAM-SHA-1 gespecificeerd
- de gebruiker is aangemaakt terwijl hij in de admin-database zit ("gebruik admin" !!)
- je hebt de rollen juist ingesteld