ฉันใช้สตริงการเชื่อมต่อเดียวกันในโลคัลและการผลิต เมื่อสตริงการเชื่อมต่อคือmongodb://localhost/mydb
ชื่อผู้ใช้และรหัสผ่านคืออะไร? ปลอดภัยไหมที่จะเก็บไว้ด้วยวิธีนี้
ฉันใช้สตริงการเชื่อมต่อเดียวกันในโลคัลและการผลิต เมื่อสตริงการเชื่อมต่อคือmongodb://localhost/mydb
ชื่อผู้ใช้และรหัสผ่านคืออะไร? ปลอดภัยไหมที่จะเก็บไว้ด้วยวิธีนี้
คำตอบ:
โดยค่าเริ่มต้น mongodb ไม่มีการควบคุมการเข้าถึงที่เปิดใช้งานดังนั้นจึงไม่มีผู้ใช้หรือรหัสผ่านเริ่มต้น
ในการเปิดใช้งานการควบคุมการเข้าถึงให้ใช้ตัวเลือกบรรทัดคำสั่ง--auth
หรือการตั้งค่าไฟล์คอนฟิกูเรชัน security.authorization
คุณสามารถใช้ขั้นตอนต่อไปนี้หรืออ้างถึงการเปิดใช้งานการตรวจสอบสิทธิ์ในเอกสาร MongoDB
เริ่ม MongoDB โดยไม่มีการควบคุมการเข้าถึง
mongod --port 27017 --dbpath /data/db1
เชื่อมต่อกับอินสแตนซ์
mongo --port 27017
สร้างผู้ดูแลระบบผู้ใช้
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
เริ่มต้นอินสแตนซ์ MongoDB อีกครั้งด้วยการควบคุมการเข้าถึง
mongod --auth --port 27017 --dbpath /data/db1
รับรองความถูกต้องในฐานะผู้ดูแลระบบผู้ใช้
mongo --port 27017 -u "myUserAdmin" -p "abc123" \
--authenticationDatabase "admin"
นอกเหนือจากสิ่งที่ @Camilo Silva ได้กล่าวไว้แล้วหากคุณต้องการให้สิทธิ์เข้าถึงฟรีเพื่อสร้างฐานข้อมูลอ่านเขียนฐานข้อมูล ฯลฯ แต่คุณไม่ต้องการสร้างบทบาทรูทคุณสามารถเปลี่ยนขั้นตอนที่ 3 ได้ดังต่อไปนี้:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" } ]
}
)
สำหรับ MongoDB ก่อนหน้า 2.6 คำสั่งในการเพิ่มผู้ใช้รูทคือaddUser
(เช่น)
db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
db.addUser
ที่คุณมี ตั้งแต่ 2.6 และในเวอร์ชันปัจจุบัน 3.4.x คุณสามารถสร้างผู้ใช้ด้วยdb.CreateUser
ไฟล์.
db.createUser
;) ( docs.mongodb.com/manual/reference/method/db.createUser )
นอกเหนือจากคำตอบที่ให้ไว้ก่อนหน้านี้ตัวเลือกหนึ่งคือทำตามแนวทาง 'localhost exception' เพื่อสร้างผู้ใช้รายแรกหากฐานข้อมูลของคุณเริ่มต้นด้วย access control ( --auth
สวิตช์) แล้ว ในการดำเนินการดังกล่าวคุณต้องมีการเข้าถึง localhost ไปยังเซิร์ฟเวอร์จากนั้นเรียกใช้:
mongo
use admin
db.createUser(
{
user: "user_name",
pwd: "user_pass",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" }
]
})
ตามที่ระบุไว้ในเอกสาร MongoDB:
ข้อยกเว้น localhost อนุญาตให้คุณเปิดใช้งานการควบคุมการเข้าถึงจากนั้นสร้างผู้ใช้รายแรกในระบบ ด้วยข้อยกเว้น localhost หลังจากที่คุณเปิดใช้งานการควบคุมการเข้าถึงให้เชื่อมต่อกับอินเทอร์เฟซ localhost และสร้างผู้ใช้รายแรกในฐานข้อมูลผู้ดูแลระบบ ผู้ใช้รายแรกต้องมีสิทธิ์ในการสร้างผู้ใช้อื่นเช่นผู้ใช้ที่มีบทบาท userAdmin หรือ userAdminAnyDatabase การเชื่อมต่อโดยใช้ข้อยกเว้น localhost มีสิทธิ์เข้าถึงเพื่อสร้างผู้ใช้รายแรกบนฐานข้อมูลผู้ดูแลระบบเท่านั้น
นี่คือลิงค์ไปยังส่วนนั้นของเอกสาร