Sim, basicamente, você pode se conectar sem autenticação, mas não pode fazer quase nada. você pode executar
db.serverBuildInfo()
db.version()
db.adminCommand({ping:1})
db.adminCommand({whatsmyuri:1})
db.adminCommand({features:1})
por exemplo, talvez alguns outros comandos.
O que parece um pouco doloroso para mim é capaz de executar:
for(var i=0;i++<20000;){db.adminCommand({forceerror:1})}
O que gera um pouco de log.
Eu verifiquei as fontes e você pode ver que esse comportamento é uma espécie de bug. As fontes da inicialização do shell estão em:https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp
Basicamente, existem dois tipos de teste em execução contra os valores de parâmetro fornecidos nos argumentos de senha e nome de usuário para o mongoshell. A inicialização verifica quando você forneceu um parâmetro --password e não escreveu uma senha depois. E há uma verificação quando você não especificou para iniciar sem db e especificou um nome de usuário que é maior que 0 do que tentará autenticar (verifique a linha 1043)
if (!nodb && username.size())
. Mas isso é tudo. Se você não especificar credenciais, parece que se conectará sem nem tentar autenticar. Acho que na fase de inicialização deve-se verificar se o processo em que nos conectamos está sendo executado com autenticação e forçar a autenticação, se necessário.