Ja i princip kan du ansluta utan autentisering men kan inte göra nästan någonting. du kan köra db.serverBuildInfo()
db.version()
db.adminCommand({ping:1})
db.adminCommand({whatsmyuri:1})
db.adminCommand({features:1})
till exempel kanske några andra kommandon.
Det som verkar lite jobbigt för mig är att kunna springa:
for(var i=0;i++<20000;){db.adminCommand({forceerror:1})}
Vilket genererar lite logg.
Jag kollade upp källorna och du kan se att det här beteendet är ett slags bugg. Källorna för skalstarten finns i:https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp
I grund och botten finns det två typer av test som körs mot parametervärdena som anges i lösenords- och användarnamnsargument för mongoshell. Uppstarten kontrollerar när du angav en --password-parameter och inte har skrivit något lösenord efter. Och det finns en kontroll när du inte har specificerat att starta utan db, och du har angett ett användarnamn som är längre än 0 än det kommer att försöka autentisera (kontrollera rad 1043)
if (!nodb && username.size())
.
Men det är allt. Om du inte anger autentiseringsuppgifter alls, verkar det kommer att ansluta utan att ens försöka autentisera. Jag antar att det i initialiseringsfasen bör kontrolleras om processen där vi ansluter körs med autentisering och tvinga ut autentisering om det behövs.