サーバーマシンで認証モードを実行しているmongodbインスタンスを実行しています。現在、mongodb インスタンスが実行されているかどうかを取得するためにシェル scipt を使用しています。mongodb が認証モードで実行されているか、非認証モードで実行されているかを確認するにはどうすればよいですか。
6917 次
1 に答える
11
経由の認証なしで MongoDB サーバーに接続できるかどうかをテストするだけの場合はbash
、次のようなスクリプトを使用できます。
#!/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 アドレス (ホスト:ポート/データベース名) です。mongo
シェルはデフォルトで using を使用しlocalhost:27017/test
ます。
このスクリプトは、許可なくユーザーをリストできるかどうかについて簡単なチェックを行います。
認証が適切に有効になっている場合、db.getUsers()
コマンドは次のようなエラーを返します。
"Error: not authorized on test to execute command { usersInfo: 1.0 }"
注: ローカルホストの例外
デフォルトでは (MongoDB 3.0 と同様)、を介して接続することにより、展開用の最初のユーザー管理者localhost exception
を作成できる があります。少なくとも 1 人のユーザーが追加されると、localhost 例外は自動的に無効になります。localhost
展開の完全なセキュリティを確認したい場合は、MongoDB セキュリティ チェックリストを確認する価値があります。
于 2015-08-17T03:44:44.623 に答える