MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come scoprire se Mongodb è in esecuzione in modalità auth nello script della shell?

Se vuoi solo provare se puoi connetterti a un server MongoDB senza autenticazione tramite bash , puoi utilizzare uno script simile al seguente:

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

Esempio di output:

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

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

L'unico parametro per questo script è un indirizzo MongoDB opzionale a cui connettersi (host:port/dbname); il mongo per impostazione predefinita la shell utilizza localhost:27017/test .

Lo script esegue un semplice controllo per verificare se gli utenti possono essere elencati senza autorizzazione.

Se l'autenticazione è abilitata correttamente, db.getUsers() il comando dovrebbe restituire un errore del tipo:

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

Nota:eccezione per l'host locale

Per impostazione predefinita (come in MongoDB 3.0) esiste un'eccezione localhost exception che ti consente di creare un primo amministratore utente per una distribuzione collegandosi tramite localhost . Una volta aggiunto almeno un utente, l'eccezione localhost viene automaticamente disabilitata.

Se desideri verificare la piena sicurezza della tua distribuzione, vale sicuramente la pena consultare il MongoDB Lista di controllo per la sicurezza .