MongoDB: เซิร์ฟเวอร์มีคำเตือนการเริ่มต้น '' ไม่ได้เปิดใช้งานการควบคุมการเข้าถึงสำหรับฐานข้อมูล ''


91

ฉันติดตั้ง MongoDB 3.4.1 เป็นครั้งแรกในวันนี้ แต่เมื่อฉันเริ่มและใช้ MongoDB shell มันให้คำเตือนเหล่านี้แก่ฉันด้านล่าง:

C:\Users\hs>"C:\Program Files\MongoDB\Server\3.4\bin\mongo.exe
MongoDB shell version v3.4.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.1
Server has startup warnings:
2017-01-12T21:19:46.941+0800 I CONTROL  [initandlisten]
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten]

คอมพิวเตอร์ของฉันคือ Microsoft Windows [ version 10.0.14393]



6
นี่เกือบจะซ้ำซ้อนกับคำถามอื่น คุณเคยถามเรื่องนี้เมื่อปีที่แล้วภายใต้ชื่อผู้ใช้อื่นหรือไม่? สิ่งเดียวที่แตกต่างคือชื่อผู้ใช้และเวอร์ชันของ Windows ดู: stackoverflow.com/questions/36660117/…
Joseph Ferris

@JosephFerris ใช่นี่เป็นการทำซ้ำสำหรับstackoverflow.com/questions/36660117/…และคำถามนั้นได้ปิดลงเนื่องจากการทำซ้ำนี้
Lakmal Vithanage

คำตอบ:


138

Mongodb v3.4

คุณต้องทำสิ่งต่อไปนี้เพื่อสร้างฐานข้อมูลที่ปลอดภัย:

ตรวจสอบให้แน่ใจว่าผู้ใช้ที่เริ่มต้นกระบวนการมีสิทธิ์และมีไดเร็กทอรีอยู่ ( /data/dbในกรณีนี้)

1) เริ่ม MongoDB โดยไม่มีการควบคุมการเข้าถึง

mongod --port 27017 --dbpath /data/db

2) เชื่อมต่อกับอินสแตนซ์

mongo --port 27017

3) การสร้างผู้ดูแลระบบของผู้ใช้(ในฐานข้อมูลการตรวจสอบสิทธิ์ของผู้ดูแลระบบ)

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

4) เริ่มต้นอินสแตนซ์ MongoDB อีกครั้งด้วยการควบคุมการเข้าถึง

mongod --auth --port 27017 --dbpath /data/db

5) เชื่อมต่อและรับรองความถูกต้องในฐานะผู้ดูแลระบบผู้ใช้

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

6) สร้างผู้ใช้เพิ่มเติมตามความจำเป็นสำหรับการใช้งานของคุณ(เช่นในฐานข้อมูลการตรวจสอบการทดสอบ)

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

7) เชื่อมต่อและรับรองความถูกต้องเป็น myTester

mongo --port 27017 -u "myTester" -p "xyz123" --authenticationDatabase "test"

โดยพื้นฐานแล้วฉันเพิ่งอธิบายเวอร์ชันสั้น ๆ ของเอกสารอย่างเป็นทางการที่นี่: https://docs.mongodb.com/master/tutorial/enable-authentication/


1
ฉันก็ทำเหมือนที่คุณพูด แต่ปัญหาเดียวคือสิ่งนี้ - ต้องผ่านทุกครั้งหรือครั้งเดียว ถ้าทุกครั้งจะให้บริการอย่างไรเพราะในเซิร์ฟเวอร์ฉันต้องการเริ่มต้นบริการ sudo MongoDB นี้หรือไม่?
suresh pareek

6
@sureshpareek คุณสามารถกำหนดค่านี้ได้ในไฟล์ mongodb.conf หากคุณไม่ต้องการส่งต่อทุกครั้งข้อมูลเพิ่มเติมที่นี่: docs.mongodb.com/manual/reference/configuration-options/…
basickarl

1
@sureshpareek ผู้ชายไม่มีปัญหา! ตรวจสอบที่นี่หากคุณต้องการทราบข้อมูลเพิ่มเติม: stackoverflow.com/a/42929869/1137669ฉันอธิบายรายละเอียดเพิ่มเติมเล็กน้อย
basickarl

ฉันล้มเหลวในขั้นตอนแรกฉันเป็นเวอร์ชัน v3.6.5 คำเตือนเดียวกันและปิด
wyx

8
เอาจริง ... ทำไมคุณไม่บอกว่าจะเปิดใช้งานsecurity.authorizationในmongod.conf??????
John

-6

คุณต้องลบโฟลเดอร์ฐานข้อมูลเก่าและสร้างโฟลเดอร์ใหม่ จะช่วยแก้ปัญหาของคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.