Ano, v zásadě se můžete připojit bez ověření, ale nemůžete dělat téměř nic. můžete spustit db.serverBuildInfo()
db.version()
db.adminCommand({ping:1})
db.adminCommand({whatsmyuri:1})
db.adminCommand({features:1})
třeba nějaké další příkazy.
Což se mi zdá trochu bolestivé, je to, že je možné běžet:
for(var i=0;i++<20000;){db.adminCommand({forceerror:1})}
Což generuje kousek protokolu.
Zkontroloval jsem zdroje a můžete vidět, že toto chování je druh chyby. Zdroje spuštění shellu jsou v:https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp
V zásadě existují dva typy testů běžících proti hodnotám parametrů uvedeným v argumentech hesla a uživatelského jména pro mongoshell. Spuštění zkontroluje, zda jste zadali parametr --password a nezapsali jste heslo. A dojde ke kontrole, když jste nezadali spuštění bez db a zadali jste uživatelské jméno, které je delší než 0, než se pokusí ověřit (kontrolní řádek 1043)
if (!nodb && username.size())
.
Ale to je vše. Pokud vůbec nezadáte přihlašovací údaje, zdá se, že se připojí, aniž by se pokusili ověřit. Myslím, že v inicializační fázi by se mělo zkontrolovat, zda proces, kde se připojujeme, běží s ověřováním a v případě potřeby vynutit autentizaci.