MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak sprawdzić, czy Mongodb działa w trybie auth w skrypcie powłoki?

Jeśli chcesz tylko sprawdzić, czy możesz połączyć się z serwerem MongoDB bez uwierzytelniania przez bash , możesz użyć skryptu podobnego do następującego:

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

Przykładowe wyjście:

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

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

Jedynym parametrem tego skryptu jest opcjonalny adres MongoDB, z którym można się połączyć (host:port/nazwa bazy danych); mongo powłoka domyślnie używa localhost:27017/test .

Skrypt w prosty sposób sprawdza, czy użytkownicy mogą być umieszczani na liście bez pozwolenia.

Jeśli auth jest poprawnie włączone, db.getUsers() polecenie powinno zwrócić błąd, taki jak:

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

Uwaga:wyjątek lokalnego hosta

Domyślnie (jak w MongoDB 3.0) istnieje localhost exception który pozwala utworzyć pierwszego administratora użytkowników dla wdrożenia, łącząc się przez localhost . Po dodaniu co najmniej jednego użytkownika wyjątek localhost jest automatycznie wyłączany.

Jeśli chcesz sprawdzić pełne bezpieczeństwo swojego wdrożenia, zdecydowanie warto zapoznać się z MongoDB Lista kontrolna bezpieczeństwa .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb - Mapa-Reduce - Pełne dane nie są zwracane

  2. Dodaj nowy atrybut do istniejącego obiektu json w node.js

  3. Importujesz plik JSON za pomocą mongimport, czy nadal otrzymujesz „nieoczekiwany identyfikator”?

  4. Kontener mongo systemu Windows Docker nie działa z montowaniem woluminu

  5. ServerSelectionTimeoutError errno 11001 getaddrinfo nie powiodło się python