はい、基本的には認証なしで接続できますが、ほとんど何もできません。 db.serverBuildInfo()
を実行できます
db.version()
db.adminCommand({ping:1})
db.adminCommand({whatsmyuri:1})
db.adminCommand({features:1})
たとえば、他のコマンドなどです。
私にとって少し苦痛に思えるのは、実行できることです:
for(var i=0;i++<20000;){db.adminCommand({forceerror:1})}
少しのログが生成されます。
ソースを確認したところ、この動作は一種のバグであることがわかります。シェルスタートアップのソースは次のとおりです: https: //github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp
基本的に、mongoshellのpassword引数とusername引数で指定されたパラメーター値に対して実行される2種類のテストがあります。スタートアップは、-passwordパラメータを指定し、その後にパスワードを書き込んでいないかどうかを確認します。また、dbなしで開始するように指定しておらず、認証を試みるよりも長いユーザー名を指定した場合のチェックがあります(1043行目をチェック)
if (!nodb && username.size())
。
しかし、それだけです。クレデンシャルをまったく指定しないと、認証を試みなくても接続されるようです。初期化フェーズでは、接続するプロセスが認証で実行されているかどうかを確認し、必要に応じて認証を強制する必要があると思います。