sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur tar man reda på om Mongodb körs i auth-läge i skalskript?

Om du bara vill testa om du kan ansluta till en MongoDB-server utan autentisering via bash , kan du använda ett skript som liknar följande:

#!/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

Exempelutgång:

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

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

Den enda parametern för detta skript är en valfri MongoDB-adress att ansluta till (host:port/dbname); mongo shell använder som standard localhost:27017/test .

Skriptet gör en enkel kontroll av om användare kan listas utan tillstånd.

Om auth är korrekt aktiverat, visas db.getUsers() kommandot bör returnera ett fel som:

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

Obs:Localhost-undantag

Som standard (som vid MongoDB 3.0) finns det ett localhost exception som låter dig skapa en första användaradministratör för en distribution genom att ansluta via localhost . När minst en användare har lagts till inaktiveras localhost-undantaget automatiskt.

Om du vill kontrollera den fullständiga säkerheten för din distribution är det definitivt värt att granska MongoDB Säkerhetschecklista .




  1. Kan vi använda vårens datalager för att uppdatera inbäddade dokument i mongodb

  2. Använd 'MongoMappingContext#setAutoIndexCreation(boolean)' eller åsidosätt 'MongoConfigurationSupport#autoIndexCreation()' för att vara explicit

  3. MongoDB $stdDevSamp

  4. Hur man uppdaterar Multiple Array-objekt i mongodb