ว้าวคำตอบที่ซับซ้อน / สับสนมากมายที่นี่
นี้จะเป็นของv3.4
คำตอบสั้น ๆ
1) เริ่ม MongoDB โดยไม่มีการควบคุมการเข้าถึง
mongod --dbpath /data/db
2) เชื่อมต่อกับอินสแตนซ์
mongo
3) สร้างผู้ใช้
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) หยุดอินสแตนซ์ MongoDB และเริ่มต้นอีกครั้งด้วยการควบคุมการเข้าถึง
mongod --auth --dbpath /data/db
5) เชื่อมต่อและรับรองความถูกต้องเป็นผู้ใช้
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
คำตอบยาว: อ่านสิ่งนี้หากคุณต้องการเข้าใจอย่างถูกต้อง
มันง่ายมาก ฉันจะใบ้ด้านล่างhttps://docs.mongodb.com/manual/tutorial/enable-authentication/
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับบทบาทที่แท้จริงอ่านเพิ่มเติมได้ที่นี่: https://docs.mongodb.com/manual/reference/built-in-roles/
1) เริ่ม MongoDB โดยไม่มีการควบคุมการเข้าถึง
mongod --dbpath /data/db
2) เชื่อมต่อกับอินสแตนซ์
mongo
3) สร้างผู้ดูแลระบบผู้ใช้ ต่อไปนี้สร้างผู้ดูแลระบบผู้ใช้ในadmin
ฐานข้อมูลการรับรองความถูกต้อง ผู้ใช้เป็นdbOwner
มากกว่าsome_db
ฐานข้อมูลและไม่เกินadmin
ฐานข้อมูลนี้เป็นสิ่งสำคัญที่ต้องจำ
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
หรือถ้าคุณต้องการสร้างผู้ดูแลระบบซึ่งเป็นผู้ดูแลระบบผ่านฐานข้อมูลใด ๆ :
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) หยุดอินสแตนซ์ MongoDB และเริ่มต้นอีกครั้งด้วยการควบคุมการเข้าถึง
mongod --auth --dbpath /data/db
5) เชื่อมต่อและรับรองความถูกต้องในฐานะผู้ดูแลระบบของผู้ใช้ไปยังadmin
ฐานข้อมูลการรับรองความถูกต้องไม่ใช่ไปยังsome_db
ฐานข้อมูลการรับรองความถูกต้อง ผู้ดูแลระบบผู้ใช้ถูกสร้างขึ้นในadmin
ฐานข้อมูลการรับรองความถูกต้องผู้ใช้ไม่มีอยู่ในsome_db
ฐานข้อมูลการรับรองความถูกต้อง
use admin
db.auth("myDbOwner", "abc123")
คุณกำลังรับรองความถูกต้องในขณะนี้เป็นdbOwner
มากกว่าsome_db
ฐานข้อมูล ดังนั้นตอนนี้ถ้าคุณต้องการอ่าน / เขียน / ทำข้อมูลโดยตรงไปยังsome_db
ฐานข้อมูลคุณสามารถเปลี่ยนมันได้
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
เพิ่มเติมเกี่ยวกับบทบาท: https://docs.mongodb.com/manual/reference/built-in-roles/
หากคุณต้องการให้ผู้ใช้เพิ่มเติมซึ่งไม่ใช่ผู้ดูแลระบบและเป็นเพียงผู้ใช้ปกติอ่านต่อด้านล่าง
6) สร้างผู้ใช้ปกติ ผู้ใช้นี้จะถูกสร้างขึ้นในsome_db
ฐานข้อมูลการตรวจสอบด้านล่าง
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) ออกจากเปลือก Mongo เชื่อมต่อใหม่รับรองความถูกต้องในฐานะผู้ใช้
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})