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?
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:
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 --auth
hoặ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.
Khởi động MongoDB mà không cần kiểm soát truy cập.
mongod --port 27017 --dbpath /data/db1
Kết nối với phiên bản.
mongo --port 27017
Tạo quản trị viên người dùng.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
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
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"
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" } ]
}
)
Đối với MongoDB trước 2.6, lệnh để thêm người dùng root là addUser
(ví dụ)
db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
db.addUser
. Bắt đầu từ 2.6 và trong phiên bản hiện tại 3.4.x, bạn có thể tạo người dùng với db.CreateUser
.
db.createUser
;) ( docs.mongodb.com/manual/reference/method/db.createUser )
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 ( --auth
chuyể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.