Да, по принцип можете да се свържете без удостоверяване, но не можете да направите почти нищо. можете да стартирате 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 и не сте написали парола след това. Има и проверка, когато не сте посочили да стартирате без db и сте посочили потребителско име, което е по-дълго от 0, отколкото ще се опита да удостовери (проверете ред 1043)
if (!nodb && username.size())
.
Но това е всичко. Ако изобщо не посочите идентификационни данни, изглежда, че ще се свърже без дори да се опита да удостовери. Предполагам, че във фазата на инициализация трябва да се провери дали процесът, при който се свързваме, работи с удостоверяване и принудително да се изключи удостоверяването, ако е необходимо.