sql >> Database >  >> NoSQL >> MongoDB

Hoe kom ik erachter of Mongodb in auth-modus in shellscript wordt uitgevoerd?

Als je gewoon wilt testen of je zonder authenticatie verbinding kunt maken met een MongoDB-server via bash , kunt u een script gebruiken dat lijkt op het volgende:

#!/bin/bash

# Connect to MongoDB address (host:port/dbname) specified as first parameter
# If no address specified, `mongo` default will be localhost:27017/test
isAuth=`mongo --eval "db.getUsers()" $1 | grep "not auth"`

if [ -z "$isAuth" ] ;
then
   echo "mongod auth is NOT enabled"
   exit 1
else
   echo "mongod auth is ENABLED"
   exit 0
fi

Voorbeelduitvoer:

$ ./isAuthEnabled.sh localhost:27017
mongod auth is ENABLED

$ ./isAuthEnabled.sh localhost:27777
mongod auth is NOT enabled

De enige parameter voor dit script is een optioneel MongoDB-adres om verbinding mee te maken (host:port/dbname); de mongo shell gebruikt standaard localhost:27017/test .

Het script controleert eenvoudig of gebruikers zonder toestemming kunnen worden vermeld.

Als auth correct is ingeschakeld, wordt de db.getUsers() commando zou een fout moeten retourneren zoals:

  "Error: not authorized on test to execute command { usersInfo: 1.0 }"

Opmerking:Localhost-uitzondering

Standaard (zoals bij MongoDB 3.0) is er een localhost exception waarmee u een eerste gebruikersbeheerder kunt maken voor een implementatie door verbinding te maken via localhost . Zodra ten minste één gebruiker is toegevoegd, wordt de localhost-uitzondering automatisch uitgeschakeld.

Als u de volledige beveiliging van uw implementatie wilt controleren, is het zeker de moeite waard om de MongoDB te bekijken Beveiligingschecklist .




  1. Redis scan count:Hoe kan ik SCAN forceren om alle sleutels terug te sturen die overeenkomen met een patroon?

  2. Hoe de Redis-prestaties te verhogen bij 100% CPU? Scheren? Snelste .Net-client?

  3. Een overzicht van MongoDB-gebruikersbeheer

  4. Datum() invoegen in Mongodb via mongo-shell