Ya pada dasarnya Anda dapat terhubung tanpa otentikasi tetapi tidak dapat melakukan hampir semua hal. anda dapat menjalankan db.serverBuildInfo()
db.version()
db.adminCommand({ping:1})
db.adminCommand({whatsmyuri:1})
db.adminCommand({features:1})
misalnya, mungkin beberapa perintah lain.
Yang agak susah buat saya adalah yang bisa lari:
for(var i=0;i++<20000;){db.adminCommand({forceerror:1})}
Yang menghasilkan sedikit log.
Saya memeriksa sumbernya, dan Anda dapat melihat perilaku ini semacam bug. Sumber dari startup shell ada di :https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp
Pada dasarnya ada dua jenis pengujian yang berjalan terhadap nilai parameter yang diberikan dalam argumen kata sandi dan nama pengguna untuk mongoshell. Startup memeriksa ketika Anda memberikan parameter --password dan belum menulis kata sandi setelahnya. Dan ada pemeriksaan ketika Anda belum menentukan untuk memulai tanpa db, dan Anda telah menentukan nama pengguna yang lebih panjang dari 0 daripada yang akan mencoba untuk mengotentikasi (periksa baris 1043)
if (!nodb && username.size())
.
Tapi itu saja. Jika Anda tidak menentukan kredensial sama sekali, tampaknya akan terhubung bahkan tanpa mencoba mengautentikasi. Saya kira dalam fase inisialisasi itu harus diperiksa cuaca proses di mana kita terhubung berjalan dengan otentikasi dan memaksa keluar authenicaion jika diperlukan.