Ja grundlæggende kan du oprette forbindelse uden godkendelse, men kan næsten ikke gøre noget. du kan køre db.serverBuildInfo()
db.version()
db.adminCommand({ping:1})
db.adminCommand({whatsmyuri:1})
db.adminCommand({features:1})
for eksempel måske nogle andre kommandoer.
Hvilket virker lidt smertefuldt for mig er at kunne løbe:
for(var i=0;i++<20000;){db.adminCommand({forceerror:1})}
Hvilket genererer en smule log.
Jeg tjekkede kilderne ud, og du kan se, at denne adfærd er en slags fejl. Kilderne til shell-opstarten er i:https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp
Grundlæggende er der to typer test, der kører mod parameterværdierne givet i adgangskode- og brugernavnargumenter for mongoshell. Opstarten kontrollerer, hvornår du har angivet en --password-parameter og ikke har skrevet en adgangskode efter. Og der er et flueben, når du ikke har angivet at starte uden db, og du har angivet et brugernavn, der er længere end 0, end det vil forsøge at godkende (tjek linje 1043)
if (!nodb && username.size())
.
Men det er alt. Hvis du slet ikke angiver legitimationsoplysninger, ser det ud til, at det vil oprette forbindelse uden selv at forsøge at godkende. Jeg gætter på, at det i initialiseringsfasen skal kontrolleres, om processen, hvor vi forbinder, kører med godkendelse og tvinge godkendelse ud, hvis det er nødvendigt.