MongoDB: Máy chủ có cảnh báo khởi động '' Kiểm soát truy cập không được bật cho cơ sở dữ liệu ''


89

Lần đầu tiên tôi cài đặt MongoDB 3.4.1 hôm nay. Nhưng khi tôi khởi động nó và sử dụng MongoDB shell, nó đã đưa ra những cảnh báo dưới đây cho tôi:

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]

máy tính của tôi là Microsoft Windows [ version 10.0.14393].



6
Đây gần như là một bản sao hoàn hảo của một câu hỏi khác. Bạn có tình cờ hỏi điều này vào năm ngoái với một tên người dùng khác không? Điều duy nhất khác biệt là tên người dùng và phiên bản của Windows. Xem: stackoverflow.com/questions/36660117/…
Joseph Ferris

@JosephFerris, Có, đây là sự trùng lặp cho stackoverflow.com/questions/36660117/… và câu hỏi đó đã bị đóng vì sự trùng lặp này.
Lakmal Vithanage

Câu trả lời:


137

Mongodb v3.4

Bạn cần thực hiện những việc sau để tạo cơ sở dữ liệu an toàn:

Đảm bảo rằng người dùng bắt đầu quá trình có quyền và các thư mục tồn tại ( /data/dbtrong trường hợp này).

1) Khởi động MongoDB mà không cần kiểm soát truy cập.

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

2) Kết nối với phiên bản.

mongo --port 27017

3) Tạo quản trị viên người dùng (trong cơ sở dữ liệu xác thực quản trị viên) .

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

4) Khởi động lại cá thể MongoDB với quyền kiểm soát truy cập.

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

5) Kết nối và xác thực với tư cách là quản trị viên người dùng.

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

6) Tạo người dùng bổ sung nếu cần cho việc triển khai của bạn (ví dụ: trong cơ sở dữ liệu xác thực thử nghiệm) .

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

7) Kết nối và xác thực như myTester.

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

Về cơ bản, tôi chỉ giải thích phiên bản ngắn của tài liệu chính thức tại đây: https://docs.mongodb.com/master/tutorial/enable-authentication/


1
Tôi thực sự như bạn đã nói nhưng chỉ có một vấn đề là điều này phải được thực hiện mọi lúc hoặc một lần. nếu mọi lúc thì làm thế nào để cung cấp với dịch vụ vì trong một máy chủ tôi muốn thích dịch vụ sudo này MongoDB bắt đầu?
suresh pareek

5
@sureshpareek Bạn có thể cấu hình này trong file mongodb.conf nếu bạn không muốn vượt qua nó mọi lúc, biết thêm ở đây: docs.mongodb.com/manual/reference/configuration-options/...
basickarl

1
@sureshpareek Không vấn đề gì anh bạn! Kiểm tra ở đây nếu bạn muốn biết thêm về nó: stackoverflow.com/a/42929869/1137669 Tôi giải thích chi tiết hơn một chút.
basickarl, 29/07/17

Tôi thất bại trong bước đầu tiên .I là phiên bản v3.6.5 .Công cảnh báo tương tự và nó shutdown
wyx

7
Nghiêm túc guys ... Tại sao bạn không nói để cho phép security.authorizationtrong mongod.conf??????
John

-5

Bạn cần xóa thư mục db cũ của mình và tạo lại thư mục mới. Nó sẽ giải quyết vấn đề của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.