Quản lý người dùng và là một số nhiệm vụ quản trị quan trọng nhất của việc quản lý máy chủ MongoDB. Bạn phải đảm bảo rằng máy chủ được định cấu hình để có thể xác định chính xác người dùng và ứng dụng của bạn và từ chối các kết nối hoặc hoạt động không thể xác thực chính xác
Để quản lý các yêu cầu này, bạn phải có khả năng quyết định những người dùng mà máy chủ của bạn yêu cầu và tạo các tài khoản đó. Là một phần của quy trình này, bạn có thể đặt chi tiết xác thực để cho phép truy cập bên ngoài bằng danh tính mới
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn cách tạo, xem và xóa tài khoản người dùng. Chúng tôi sẽ giới thiệu cách thiết lập xác thực cho tài khoản của bạn và cách cập nhật thông tin đăng nhập khi bạn cần thay đổi mật khẩu người dùng của mình
LIÊN QUAN ĐẾN PRISMA. IO
Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất
Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có
Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu
điều kiện tiên quyết
Để làm theo hướng dẫn này, bạn sẽ cần một tài khoản trên máy chủ với các đặc quyền thích hợp
Các lệnh và phương thức chúng ta sẽ sử dụng
Để tạo, sửa đổi và xóa người dùng trong MongoDB và định cấu hình xác thực, các phương thức cốt lõi bạn cần là
5. tạo tài khoản người dùng MongoDB mớiswitched to db admin
6. cập nhật thông tin chi tiết của tài khoản người dùngswitched to db admin
7. thay đổi mật khẩu được sử dụng bởi tài khoản người dùngswitched to db admin
8. xóa tài khoản người dùng MongoDBswitched to db admin
Ngoài ra, lệnh cơ sở dữ liệu sau đây rất hữu ích để tìm thông tin về người dùng trên hệ thống
9. hiển thị thông tin về một hoặc nhiều tài khoản người dùng MongoDBswitched to db admin
đặc quyền bắt buộc
Để thực hiện các lệnh trên, bạn cần đăng nhập vào MongoDB bằng một tài khoản với một số hành động đặc quyền khác nhau. Các đặc quyền cụ thể mà bạn yêu cầu tùy thuộc vào các lệnh bạn cần sử dụng
Để nhận thông tin về những người dùng khác, người dùng hiện tại của bạn phải bật hành động đặc quyền sau
Để tạo người dùng mới, người dùng hiện tại của bạn phải bật các hành động đặc quyền sau
Để thay đổi mật khẩu hoặc chi tiết tài khoản của người dùng, bạn có thể cần các đặc quyền sau
- để thay đổi mật khẩu tài khoản của riêng bạn
- để thay đổi dữ liệu tùy chỉnh của tài khoản của riêng bạn
- để thay đổi mật khẩu của người dùng khác
- để thay đổi dữ liệu tùy chỉnh của người dùng khác
Chúng tôi sẽ không đề cập đến quản lý vai trò trong hướng dẫn này, vì vậy các hành động đặc quyền
2 và
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
8 là không bắt buộc
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
Để xóa tài khoản người dùng, người dùng hiện tại của bạn phải bật hành động đặc quyền sau
Hiểu cách MongoDB triển khai người dùng và xác thực
Trước khi chúng tôi bắt đầu tạo và quản lý tài khoản, sẽ rất hữu ích nếu bạn dành chút thời gian để làm quen với cách MongoDB xác định và lưu trữ thông tin này
Trong MongoDB, tài khoản người dùng là sự kết hợp của tên người dùng tài khoản cùng với cơ sở dữ liệu xác thực cụ thể. Cơ sở dữ liệu xác thực chỉ đơn giản là cơ sở dữ liệu nơi người dùng được xác định và không bao hàm giới hạn về phạm vi hoặc quyền. Cơ sở dữ liệu xác thực là cơ sở dữ liệu thông thường được sử dụng để quản lý dữ liệu khác và không phải là cơ sở dữ liệu chuyên dụng, đặc biệt
Tên tài khoản người dùng phải là duy nhất trong cơ sở dữ liệu xác thực của nó. Tuy nhiên, cùng một tên người dùng có thể được sử dụng lại với cơ sở dữ liệu xác thực khác để tạo tài khoản người dùng mới, riêng biệt
Do thiết kế này, một tài khoản chỉ có thể được xác định chính xác bằng cách bao gồm tên người dùng và cơ sở dữ liệu xác thực. Để xác thực tài khoản, người ta cũng cần cung cấp thông tin đăng nhập được liên kết với tài khoản. Đây thường là mật khẩu, nhưng cũng có thể là chứng chỉ
Làm thế nào để bạn tạo người dùng?
Bây giờ chúng ta đã xem cách MongoDB khái niệm hóa tài khoản người dùng, chúng ta có thể thảo luận về cách tạo người dùng mới. Hãy nhớ đăng nhập vào máy chủ MongoDB của bạn với người dùng có đặc quyền phù hợp để theo dõi
Để tạo người dùng mới, trước tiên bạn phải chuyển sang cơ sở dữ liệu mà bạn muốn sử dụng làm cơ sở dữ liệu xác thực của người dùng mới
Trước tiên, bạn có thể lấy danh sách các cơ sở dữ liệu đã được định cấu hình trên hệ thống của mình bằng cách nhập
show dbs
Chuyển sang cơ sở dữ liệu mà người dùng sẽ được liên kết bằng cách sử dụng lệnh
0
Successfully added user: { "user" : "tom", "roles" : [ ] }
use admin
switched to db admin
Để tạo người dùng mới, bạn có thể sử dụng phương pháp
1 hoặc bạn có thể sử dụng lệnh cơ sở dữ liệu
Successfully added user: { "user" : "tom", "roles" : [ ] }
1. Dù bằng cách nào, bạn sẽ cần chuyển tên người dùng [trường
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
3], mật khẩu [trường
Successfully added user: { "user" : "tom", "roles" : [ ] }
4] và một loạt các vai trò mà người dùng sẽ được thêm vào [khóa
Successfully added user: { "user" : "tom", "roles" : [ ] }
5] trong một đối tượng
Successfully added user: { "user" : "tom", "roles" : [ ] }
3
Successfully added user: { "user" : "tom", "roles" : [ ] }
Để tạo một người dùng mới có tên là
7 với mật khẩu được đặt thành
Successfully added user: { "user" : "tom", "roles" : [ ] }
8 với một mảng vai trò trống bằng cách sử dụng phương thức
Successfully added user: { "user" : "tom", "roles" : [ ] }
1, bạn có thể nhập
Successfully added user: { "user" : "tom", "roles" : [ ] }
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
Successfully added user: { "user" : "tom", "roles" : [ ] }
Hoạt động tương tự bằng cách sử dụng lệnh cơ sở dữ liệu
1 sẽ như thế này
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
Successfully added user: { "user" : "tom", "roles" : [ ] }
Hai tùy chọn khác nhau rất giống nhau, vì vậy chúng tôi sẽ chỉ hiển thị các phương thức cơ sở dữ liệu khi áp dụng trong tương lai. Tuy nhiên, nếu bạn thích cú pháp lệnh cơ sở dữ liệu hơn, bạn có thể tìm thấy từng lệnh liên quan trong tài liệu tham khảo lệnh MongoDB
Trong các lệnh trên, chúng tôi đã xác định rõ ràng mật khẩu nội tuyến trong đối tượng
3. Để ngăn mật khẩu bị ghi lại và có thể truy xuất được, bạn có thể sử dụng phương pháp
Successfully added user: { "user" : "tom", "roles" : [ ] }
2 trong tài liệu
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
3 để yêu cầu MongoDB nhắc bạn nhập mật khẩu một cách tương tác khi lệnh được chạy. Mật khẩu sẽ không hiển thị, vì vậy lịch sử lệnh của bạn sẽ sạch sẽ
Successfully added user: { "user" : "tom", "roles" : [ ] }
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
Hãy nhớ rằng mật khẩu sẽ vẫn được gửi đến máy chủ ở dạng văn bản thuần túy nếu bạn không bật TLS/SSL
Làm thế nào để bạn hiển thị người dùng hiện tại?
Tiếp theo, chúng ta hãy xem cách tìm thông tin về người dùng hiện có
Để trả về nhiều người dùng, bạn có thể sử dụng phương thức
4 để hiển thị tất cả người dùng trong cơ sở dữ liệu hiện tại. Trước tiên, hãy chuyển sang cơ sở dữ liệu mà bạn muốn truy vấn
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
use admin
Tiếp theo, sử dụng phương thức
4 để trả về tất cả người dùng được liên kết với cơ sở dữ liệu hiện tại
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
1
admin 0.000GB
config 0.000GB
local 0.000GB
2
admin 0.000GB
config 0.000GB
local 0.000GB
Để hiển thị thêm thông tin xác thực của mỗi người dùng, hãy chuyển một đối tượng cho phương thức bằng khóa
6 đến
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
7
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
3_______8_______4
admin 0.000GB
config 0.000GB
local 0.000GB
Để truy vấn người dùng khớp với các tiêu chí nhất định, bạn có thể chuyển một đối tượng xác định khóa
8 xác định điều kiện khớp
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
Chẳng hạn, để lấy thông tin về tất cả người dùng trong cơ sở dữ liệu hiện tại có vai trò
9, bạn có thể nhập
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
5
admin 0.000GB
config 0.000GB
local 0.000GB
6
admin 0.000GB
config 0.000GB
local 0.000GB
Để có được một người dùng cụ thể, bạn có thể sử dụng phương pháp
0 thay thế. Điều này hoạt động giống như phương thức
Successfully added user: { "user" : "tom", "roles" : [ ] }
4, nhưng trả về một người dùng. Thay vì truyền một đối tượng cho phương thức, bạn truyền một chuỗi chứa tên người dùng mà bạn muốn truy xuất
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
7
admin 0.000GB
config 0.000GB
local 0.000GB
8
admin 0.000GB
config 0.000GB
local 0.000GB
Bạn có thể tùy ý bao gồm một đối tượng
2 bổ sung cho phép bạn chỉ định thông tin bổ sung mà bạn muốn bằng cách đặt các phím sau thành
Successfully added user: { "user" : "tom", "roles" : [ ] }
7
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
6. hiển thị thông tin xác thực ngoài đầu ra thông thường
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
5. hiển thị thông tin đặc quyền ngoài đầu ra thông thường
Successfully added user: { "user" : "tom", "roles" : [ ] }
6. hiển thị các hạn chế xác thực trên tài khoản ngoài đầu ra thông thường
Successfully added user: { "user" : "tom", "roles" : [ ] }
Ví dụ: bạn có thể yêu cầu MongoDB cung cấp cho bạn tất cả thông tin trên bằng cách nhập
9
admin 0.000GB
config 0.000GB
local 0.000GB
0
use admin
Làm cách nào để bạn thay đổi mật khẩu cho người dùng MongoDB?
Để thay đổi mật khẩu của người dùng, bạn có thể sử dụng phương pháp
7. Một lần nữa, bạn phải chuyển sang cơ sở dữ liệu xác thực của người dùng trước khi thực hiện lệnh
Successfully added user: { "user" : "tom", "roles" : [ ] }
Phương thức
7 có hai đối số. tên người dùng của tài khoản bạn muốn thay đổi và mật khẩu mới cho tài khoản
Successfully added user: { "user" : "tom", "roles" : [ ] }
Ví dụ: để thay đổi mật khẩu cho người dùng
7 được xác thực với cơ sở dữ liệu
Successfully added user: { "user" : "tom", "roles" : [ ] }
0 thành
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
1, bạn có thể nhập
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
1
use admin
Cũng giống như với phương thức
1, bạn có thể sử dụng phương thức
Successfully added user: { "user" : "tom", "roles" : [ ] }
2 cho đối số thứ hai thay vì cung cấp mật khẩu nội tuyến. MongoDB sẽ nhắc bạn nhập mật khẩu khi lệnh được thực thi
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
2_______10_______3
use admin
Làm cách nào để bạn thay đổi các chi tiết tài khoản người dùng khác?
Để thay đổi thông tin khác được liên kết với tài khoản người dùng, bạn có thể sử dụng phương pháp
4. Đảm bảo bạn chuyển sang cơ sở dữ liệu xác thực của người dùng trước khi cập nhật thông tin chi tiết của họ
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
Phương pháp
4 yêu cầu bạn chỉ định tên người dùng và sau đó cung cấp một đối tượng chứa dữ liệu bạn muốn cập nhật. Bất kỳ trường nào bạn chọn cập nhật sẽ được thay thế hoàn toàn bằng thông tin mới, vì vậy hãy đảm bảo bao gồm dữ liệu gốc cũng như dữ liệu mới trong đối tượng của bạn nếu bạn chỉ hy vọng thêm thông tin mới
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
Đối tượng mà bạn đưa vào lệnh có thông tin thay đổi có thể chứa nhiều trường khác nhau. Hãy lướt qua chúng
6. Bất kỳ dữ liệu tùy ý nào được liên kết với tài khoản người dùng
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
5. Các vai trò mà người dùng được cấp. Thường thì tốt hơn là sử dụng các phương pháp
Successfully added user: { "user" : "tom", "roles" : [ ] }
8 và
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
9 để kiểm soát tư cách thành viên của vai trò hơn là cập nhật bằng khóa này vì bạn có thể thêm và xóa từng vai trò
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
4. Mật khẩu của người dùng. Sử dụng phương pháp
Successfully added user: { "user" : "tom", "roles" : [ ] }
1 thường dễ dàng hơn nếu đó là trường duy nhất cần được cập nhật
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
2. Chỉ định các hạn chế cho tài khoản có thể giới hạn địa chỉ IP mà người dùng có thể kết nối từ hoặc đến. Giá trị của khóa này là một đối tượng hoặc mảng xác định
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
3 và hoặc
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
4, chứa các mảng chỉ định phạm vi hoặc địa chỉ IP hợp lệ. Tìm hiểu thêm trong tài liệu MongoDB trên
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
5. Các cơ chế xác thực cụ thể được sử dụng cho thông tin xác thực. Có thể được đặt thành một hoặc cả hai trong số
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
6 hoặc
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
7, nhưng chỉ có thể được thay đổi thành một tập hợp con của các cơ chế hiện tại nếu mật khẩu mới hiện không được cung cấp
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
8. Chỉ định thành phần nào xử lý mật khẩu của người dùng. Có thể là
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
9 [mặc định] hoặc
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
00
admin 0.000GB
config 0.000GB
local 0.000GB
Ví dụ: chúng tôi có thể cập nhật tài khoản
7 xác thực dựa trên cơ sở dữ liệu
Successfully added user: { "user" : "tom", "roles" : [ ] }
0 để chỉ có thể đăng nhập từ cùng một máy tính lưu trữ chính máy chủ đó bằng cách thay đổi trường
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
2
Enter password:
Successfully added user: { "user" : "tom", "roles" : [ ] }
4
use admin
Bây giờ, nếu bạn yêu cầu MongoDB hiển thị cho bạn thông tin liên quan về người dùng, nó sẽ hiển thị các hạn chế bổ sung cho tài khoản
5
use admin
6
use admin
Để hủy bỏ những hạn chế đó, chúng ta có thể chạy lại lệnh với một mảng trống
7
use admin
Làm cách nào để xóa người dùng MongoDB?
Để xóa tài khoản người dùng MongoDB, bạn có thể sử dụng phương pháp
04. Đảm bảo kết nối với cơ sở dữ liệu xác thực của người dùng trước khi xóa chúng
admin 0.000GB
config 0.000GB
local 0.000GB
Để thực thi phương thức
04, bạn cần cung cấp tên của người dùng mà bạn muốn xóa
admin 0.000GB
config 0.000GB
local 0.000GB
8
use admin
Sau khi xóa thành công, MongoDB sẽ trả về
7
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
9
use admin
Nếu tài khoản không tồn tại trong cơ sở dữ liệu hiện tại, thay vào đó, nó sẽ trả về
07
admin 0.000GB
config 0.000GB
local 0.000GB
Phần kết luận
Cấu hình xác thực và quản lý người dùng của MongoDB cho phép bạn kiểm soát ai có thể kết nối với máy chủ của bạn và thuộc tính người dùng của họ là gì. Trong bài viết sau, chúng tôi sẽ đề cập đến cách hạn chế mức truy cập mà người dùng có bằng cách xử lý phần ủy quyền của quản lý người dùng
LIÊN QUAN ĐẾN PRISMA. IO
Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất
Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có
Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu
Câu hỏi thường gặp
Làm cách nào để bạn liệt kê những người dùng hiện có trong MongoDB?
Để liệt kê những người dùng hiện có trong MongoDB, bạn có thể sử dụng phương thức
4 để hiển thị tất cả người dùng trong cơ sở dữ liệu hiện tại
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
Cú pháp sẽ giống như
0
switched to db admin
Để biết thêm chi tiết về
Làm cách nào để bạn tạo người dùng quản trị cơ sở dữ liệu trong MongoDB?
Để tạo một trong MongoDB, bạn sẽ muốn sử dụng phương thức
1 trong cơ sở dữ liệu
Successfully added user: { "user" : "tom", "roles" : [ ] }
0
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
Phần sau minh họa cú pháp sử dụng để tạo quản trị viên cơ sở dữ liệu
1
switched to db admin
Làm cách nào để bỏ người dùng trong MongoDB?
Để xóa người dùng MongoDB, bạn có thể sử dụng phương thức
04. Điều này cần được thực hiện trong cơ sở dữ liệu
admin 0.000GB
config 0.000GB
local 0.000GB
0 và cú pháp sẽ như thế này
db.createUser[{
user: "tom",
pwd: passwordPrompt[],
roles: []
}]
2
switched to db admin
Làm cách nào để kiểm tra xem người dùng cơ sở dữ liệu có tồn tại trong MongoDB không?
Để lấy danh sách tất cả người dùng hiện có trong MongoDB, bạn có thể sử dụng phương thức
4
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
Cú pháp cơ bản sẽ giống như
0
switched to db admin
Làm cách nào bạn có thể kiểm tra đặc quyền của người dùng trong MongoDB?
Để truy vấn a , bạn có thể sử dụng phương pháp
0 với
Successfully added user: { "user" : "tom", "roles" : [ ] }
5
Successfully added user: { "user" : "tom", "roles" : [ ] }
17 được đặt thành
admin 0.000GB
config 0.000GB
local 0.000GB
7
db.runCommand[{
createUser: "tom",
pwd: "hellothere",
roles: []
}]
Làm cách nào để tạo tên người dùng và mật khẩu MongoDB?
Câu trả lời ngắn. .Bắt đầu MongoDB mà không cần kiểm soát truy cập [ /data/db hoặc vị trí db của bạn]. mongod --dbpath /data/dbKết nối với ví dụ. mongoTạo người dùng. sử dụng some_db db. .Dừng phiên bản MongoDB và bắt đầu lại với quyền kiểm soát truy cập. mongod --auth --dbpath /data/dbKết nối và xác thực là người dùngLàm cách nào để tạo xác thực người dùng trong MongoDB?
Cách bật xác thực trong MongoDB .Tạo quản trị viên trong cơ sở dữ liệu quản trị với vai trò userAdminAnyDatabase. .Ngắt kết nối khỏi vỏ mongo [ Ctrl+D ]Định vị đoạn mã sau trong tệp cấu hình mongod [ /etc/mongod. .Thay đổi ủy quyền bị vô hiệu hóa thành được kích hoạt và lưu tệpQuản trị viên trong MongoDB là gì?
Cơ sở dữ liệu quản trị . to store system collections and user authentication and authorization data, which includes the administrator and users' usernames, passwords, and roles.MongoDB kết nối với quản trị viên như thế nào?
Cách kết nối với MongoDB .Tạo cơ sở dữ liệu trên MongoDB. Kết nối với vỏ MongoDB. Tạo cơ sở dữ liệu "testdb". Tạo bộ sưu tập "người dùng" và chèn nó vào "testdb"Thiết lập người dùng. Kết nối với db quản trị. Tạo quản trị viên người dùng. .Tạo kết nối tới MongoDB trên CPD. Đặt thông tin cần thiết