MongoDB người dùng và mật khẩu mặc định là gì?


103

Tôi đang sử dụng cùng một chuỗi kết nối trên local và production. Khi chuỗi kết nối làmongodb://localhost/mydb

Tên người dùng và mật khẩu là gì? Có an toàn để giữ nó theo cách này không?

Câu trả lời:


210

Theo mặc định mongodb không có kiểm soát truy cập được kích hoạt, vì vậy không có người dùng hoặc mật khẩu mặc định.

Để bật kiểm soát truy cập, hãy sử dụng tùy chọn dòng lệnh --authhoặc cài đặt tệp cấu hình security.authorization.

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

Thủ tục

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

    mongod --port 27017 --dbpath /data/db1
    
  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.

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

    mongod --auth --port 27017 --dbpath /data/db1
    
  5. 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"
    

17
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à: role: [{role: "root", db: "admin"}]
georgeos


1
nếu bạn muốn tìm việc sử dụng DBPATH: grep DBPATH /etc/mongod.conf
rckd

13

Ngoài những gì @Camilo Silva đã đề cập, nếu bạn muốn cấp quyền truy cập miễn phí để tạo cơ sở dữ liệu, đọc, ghi 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ứ 3 như sau:

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


1

Ngoài các câu trả lời đã cung cấp trước đó, một tùy chọn là làm theo cách tiếp cận 'ngoại lệ localhost' để tạo người dùng đầu tiên nếu db của bạn đã được khởi động với điều khiển truy cập ( --authchuyển đổi). Để làm điều đó, bạn cần có quyền truy cập localhost vào máy chủ và sau đó chạy:

mongo
use admin
db.createUser(
 {
     user: "user_name",
     pwd: "user_pass",
     roles: [
           { role: "userAdminAnyDatabase", db: "admin" },
           { role: "readWriteAnyDatabase", db: "admin" },
           { role: "dbAdminAnyDatabase", db: "admin" }
        ]
 })

Như đã nêu trong tài liệu MongoDB:

Ngoại lệ localhost cho phép bạn bật kiểm soát truy cập và sau đó tạo người dùng đầu tiên trong hệ thống. Với ngoại lệ localhost, sau khi bạn bật kiểm soát truy cập, hãy kết nối với giao diện localhost và tạo người dùng đầu tiên trong cơ sở dữ liệu quản trị. Người dùng đầu tiên phải có đặc quyền để tạo người dùng khác, chẳng hạn như người dùng có vai trò userAdmin hoặc userAdminAnyDatabase. Các kết nối sử dụng ngoại lệ localhost chỉ có quyền truy cập để tạo người dùng đầu tiên trên cơ sở dữ liệu quản trị.

Đây là liên kết đến phần đó của tài liệu.

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.