เริ่มแรก ต้อง ต้องกำหนดให้ mongod มีการ authen ด้วย(Password) ก่อน
ทำได้ 2 วิธี (อาจจะมีวิธีอื่น แต่ผู้เขียนขี้เกียจหาแล้ว)
วิธีที่ 1
start service ด้วย command นี้ (เพิ่มอันนี้เข้ามา--auth )
D:\Nosql_DB\mongodb2.6.4\bin\mongod.exe --auth --dbpath "D:\Nosql_DB\mongodb2.6.4\data"
วิธีที่ 2
start service ด้วย command นี้ แล้วไปอ่านค่าใน config เอา
D:\Nosql_DB\mongodb2.6.4\bin\mongod.exe --config "D:\Nosql_DB\mongodb2.6.4\bin\mongodb.conf"
สำหรับ ไฟล์ config สามารถเขียนได้ดังนี้
storage:
dbPath: D:\Nosql_DB\mongodb2.6.4\data
security:
authorization: enabled
แสนจะง่ายดาย
เสร็จแล้วลองเข้าใช้งาน mongoDB ด้วย command ดังนี้ D:\Nosql_DB\mongodb2.6.4\bin\mongo.exe
เมื่อเข้าไปแล้ว ขั้นตอนต่อไป คือ การเริ่มสร้าง USER ขึ้นมา โดยเราจะเริ่มสร้าง USER ที่มีชื่อว่า SiteAdmin ใน DB ชื่อว่า admin
ด้วย command ต่อไปนี้นะจ๊ะ
use admin;
db.createUser(
{
user: "SiteAdmin " ,
pwd: "password" ,
roles:
[
{
role: "userAdminAnyDatabase" ,
db: "admin"
}
]
}
)
เมื่อ create เสร็จแล้ว ให้ restart instance service mongodb แล้ว login เข้ามาใหม่นะจ๊ะ
ทดสอบ login ด้วย user และ password ที่เราได้ create ขึ่นเมื่อกี๊ ด้วย command ดังนี้
mongo.exe -u SiteAdmin -p password --authenticationDatabase admins
หลังจาก login สำเร็จ ผู้อ่านจะพบถึงความแตกต่าง คือ จะไม่สามารถ ใช้ command show collections ของ DB ที่เราไม่มีสิทธ์ ได้
ถ้าหากต้องการตรวจตอบว่าเรา มีสิทธื ใน db นี้หรือไม่ สามารถตรวจสอบได้จากคำสั่งดังต่อไปนี้
db.runCommand( { userInfo: "SiteAdmin" , showPrivileges: true});
ถ้าจำไม่ได้ว่ามี User อะไรบ้าง ก้อให้ใช้ command นี้
db.getUsers() ;
ต่อไปจะเป็นตัวอย่าง การเพิ่ม สิทธ์ (Role) ให้สามารถอ่านเขียนได้
db.grantRolesToUser(
"SiteAdmin ",
[
{role: "readWrite" , db: "products"} ,
{ role: "readAnyDatabase" , db: "admin"}
]
)
ต่อไปเป็นการลบ User ออกจากระบบ (ลบทั้งหมดนะ)
db.dropAllUsers( {w: "majority" , wtimeout: 5000})
ยังมีคำสั่งอีกมากมายไว้มีเวลา จะมาเขียนให้ดูใหม่นะจ๊ะ บะบาย