sql >> データベース >  >> NoSQL >> MongoDB

Mongodbがシェルスクリプトで認証モードで実行されているかどうかを確認するにはどうすればよいですか?

    bashを介して認証なしでMongoDBサーバーに接続できるかどうかをテストしたいだけの場合 、次のようなスクリプトを使用できます:

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

    出力例:

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

    このスクリプトの唯一のパラメーターは、接続するオプションのMongoDBアドレス(host:port / dbname)です。 mongo シェルのデフォルトはlocalhost:27017/testを使用します 。

    このスクリプトは、ユーザーが許可なくリストされるかどうかを簡単にチェックします。

    認証が適切に有効になっている場合、db.getUsers() コマンドは次のようなエラーを返す必要があります:

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

    注:ローカルホストの例外

    デフォルトでは(MongoDB 3.0の場合と同様に)、localhost exception これにより、最初のユーザー管理者 を作成できます。 localhostを介して接続することによるデプロイメントの場合 。少なくとも1人のユーザーが追加されると、ローカルホストの例外は自動的に無効になります。

    デプロイメントの完全なセキュリティを確認したい場合は、MongoDBを確認する価値があります。セキュリティチェックリスト




    1. Mongodb Aggregation:配列の一致する要素のみを返す方法

    2. RailsとMongoidのユニークな結果

    3. MongoDBバウンドクエリ:マイルをラジアンに変換するにはどうすればよいですか?

    4. 時系列をredisに保存する