2016-08-12 20 views

Trả lời

65

Theo mặc định, mongodb không có quyền kiểm soát truy cập được bật, do đó không có người dùng hoặc mật khẩu mặc định.

Để bật điều khiển truy cập, hãy sử dụng tùy chọn dòng lệnh --auth hoặc cài đặt tệp cấu hình bảo mật.authorization.

Bạn có thể sử dụng quy trình sau hoặc tham khảo Enabling Auth trong tài liệu MongoDB.

Thủ tục

  1. Bắt đầu MongoDB mà không kiểm soát truy cập.

    mongod --port 27017 --dbpath /data/db1 
    
  2. Kết nối với cá thể.

    mongo --port 27017 
    
  3. Tạo quản trị viên người dùng.

    use admin 
    db.createUser(
        { 
        user: "myUserAdmin", 
        pwd: "abc123", 
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
        } 
    ) 
    
  4. Khởi động lại cá thể MongoDB bằng kiểm soát truy cập.

    mongod --auth --port 27017 --dbpath /data/db1 
    
  5. Xác thực là quản trị viên người dùng.

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \ 
        --authenticationDatabase "admin" 
    
+4

Nếu người dùng được tạo với vai trò userAdminAnyDatabase, thì sẽ không thể tạo bất kỳ cơ sở dữ liệu nào. Do đó phần vai trò phải là: vai trò: [{vai trò: "root", db: "admin"}] – georgeos

+2

Vui lòng liên kết [bài đăng gốc từ MongoDB Manual] (https://docs.mongodb.com/manual/tutorial/enable -authentication /) –

1

Đối với MongoDB sớm hơn so với 2.6, lệnh để thêm một tài khoản root là addUser (ví dụ)

db.addUser({user:'admin',pwd:'<password>',roles:["root"]}) 
+0

LoạiError: db.addUser không phải là một hàm không hoạt động –

+0

Đến phiên bản 2.6 bạn có 'db.addUser'. Bắt đầu từ phiên bản 2.6 và trong phiên bản 3.4.x hiện tại, bạn có thể tạo một người dùng với 'db.CreateUser'. –

2

Bên cạnh đó với những gì @Camilo Silva đã đề cập, nếu bạn muốn từ bỏ truy cập miễn phí để tạo cơ sở dữ liệu, đọc, viết cơ sở dữ liệu, v.v. nhưng bạn không muốn tạo vai trò gốc, bạn có thể thay đổi bước thứ ba bằng cách sau:

use admin 
db.createUser(
    { 
    user: "myUserAdmin", 
    pwd: "abc123", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, 
      { role: "dbAdminAnyDatabase", db: "admin" }, 
      { role: "readWriteAnyDatabase", db: "admin" } ] 
    } 
) 
Các vấn đề liên quan