ความเป็นไปได้อื่น ๆ : เมื่อคุณสร้างผู้ใช้คุณอาจได้รับuse
ฐานข้อมูลอื่นที่ไม่ใช่admin
หรือฐานข้อมูลอื่นที่คุณต้องการโดยบังเอิญ คุณต้องตั้งค่า--authenticationDatabase
เป็นฐานข้อมูลที่ผู้ใช้สร้างขึ้นจริง
mongodb
ดูเหมือนว่าจะทำให้คุณอยู่ในtest
ฐานข้อมูลโดยค่าเริ่มต้นเมื่อคุณเปิดเปลือกดังนั้นคุณจะต้องเขียน--authenticationDatabase test
มากกว่า--authenticationDatabase admin
ถ้าคุณตั้งใจถูกuse
ไอเอ็นจีเมื่อคุณวิ่งtest
db.createUser(...)
สมมติว่าคุณสามารถเข้าถึงเครื่องที่เรียกใช้อินสแตนซ์ mongodb ได้ y สามารถปิดใช้งานการอนุญาตใน/etc/mongod.conf
(แสดงความคิดเห็นauthorization
ซึ่งซ้อนอยู่ภายใต้การรักษาความปลอดภัย) จากนั้นรีสตาร์ทเซิร์ฟเวอร์ของคุณจากนั้นเรียกใช้:
mongo
show users
และคุณอาจได้รับสิ่งนี้:
{
"_id" : "test.myusername",
"user" : "myusername",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydatabasename"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
สังเกตว่าค่าเท่ากับdb
test
นั่นเป็นเพราะเมื่อฉันสร้างผู้ใช้ที่ฉันไม่ได้ทำงานเป็นครั้งแรกหรือuse admin
use desiredDatabaseName
ดังนั้นคุณสามารถลบผู้ใช้ด้วยdb.dropUser("myusername")
และสร้างผู้ใช้อื่นภายใต้ฐานข้อมูลที่คุณต้องการดังนี้:
use desiredDatabaseName
db.createUser(...)
หวังว่าจะช่วยคนที่อยู่ในฐานะ noob ของฉันด้วยสิ่งนี้