MongoDB là một hệ thống cơ sở dữ liệu NoSQL (không phải SQL hoặc không quan hệ) phân tán, đa nền tảng và mã nguồn mở. Thay vì lưu trữ dữ liệu trong các bảng như cơ sở dữ liệu SQL truyền thống, MongoDB sử dụng các tài liệu linh hoạt để lưu trữ nhiều dạng dữ liệu khác nhau. MongoDB sử dụng định dạng JSON nhị phân, BSON, để lưu trữ dữ liệu.
MongoDB là một cơ sở dữ liệu NoSQL phân tán có tính khả dụng cao tích hợp, tự động chuyển đổi dự phòng và dự phòng dữ liệu, và khả năng mở rộng theo chiều ngang thông qua phân mảnh trên các cụm phân tán và hỗ trợ triển khai theo địa lý đa vùng. MongoDB cũng cung cấp API truy vấn hỗ trợ các hoạt động CRUD (đọc và ghi), đường ống tổng hợp dữ liệu, tìm kiếm văn bản và truy vấn không gian địa lý.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt MongoDB trên máy chủ Debian 12. Bạn cũng sẽ học cách bật xác thực MongoDB, sử dụng máy khách MongoDB 'mongosh' và sử dụng các truy vấn cơ bản để tạo người dùng và cơ sở dữ liệu mới trong MongoDB.
Trước tiên, hãy chạy lệnh 'nano' bên dưới để tạo tệp dịch vụ mới /etc/systemd/system/disable-thp.service.
Dán tập lệnh dịch vụ sau để thiết lập 'transparent_hugepage' thành 'không bao giờ'.
Lưu tệp và thoát.
Bây giờ hãy chạy lệnh 'systemctl' sau để tải lại trình quản lý systemd. Sau đó, khởi động và bật dịch vụ 'disable-thp'. Với điều này, 'transparent_hugepage' sẽ bị vô hiệu hóa khi hệ thống khởi động.
Tiếp theo, tạo một tệp mới /etc/security/limits.d/mongodb.conf với 'nano' biên tập viên.
Chèn cấu hình bên dưới để thiết lập quy trình và tệp giới hạn tối đa thành '64000' cho người dùng 'mongod'.
Khi hoàn tất, hãy lưu tệp và thoát.
Sau đó, hãy chỉnh sửa Tệp '/etc/sysctl.conf' có nội dung sau.
Chèn cấu hình bên dưới vào cuối dòng.
Lưu tệp và thoát.
Cuối cùng, chạy lệnh 'sysctl' bên dưới để áp dụng các thay đổi trên Tệp '/etc/sysctl.conf' ngay lập tức.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22337%22%3E%3C/svg%3E
Cài đặt các gói 'gnupg' và 'curl' vào hệ thống Debian của bạn bằng lệnh sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22405%22%3E%3C/svg%3E
Bây giờ hãy thêm khóa GPG MongoDB và kho lưu trữ cho Debian bằng lệnh bên dưới. Trong trường hợp này, bạn sẽ thiết lập kho lưu trữ cho MongoDB 7.0.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22291%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh 'apt' bên dưới để làm mới danh sách gói của bạn và cài đặt gói 'mongodb-org'.
Trong đầu ra sau, bạn có thể thấy cài đặt MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22249%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy tải lại trình quản lý systemd bằng lệnh 'systemctl'.
Khởi động và kích hoạt dịch vụ 'mongod', sau đó xác minh để đảm bảo rằng dịch vụ đang chạy.
Nếu MongoDB đang chạy, bạn sẽ thấy đầu ra như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22300%22%3E%3C/svg%3E
Đăng nhập vào máy chủ MongoDB bằng lệnh 'mongosh' bên dưới. Không có mật khẩu cho cài đặt MongoDB mặc định.
Chạy lệnh 'disableTelemetry()' để tắt tính năng thu thập dữ liệu ẩn danh khỏi MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22366%22%20height=%22106%22%3E%3C/svg%3E
Chuyển sang cơ sở dữ liệu 'admin' bằng truy vấn 'use'.
Bây giờ hãy chạy truy vấn sau để tạo người dùng mới 'myAdmin' sẽ được sử dụng làm quản trị viên cho máy chủ MongoDB của bạn. Nhập mật khẩu khi được yêu cầu.
Gõ lệnh 'quit()' để thoát khỏi máy chủ MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22649%22%20height=%22485%22%3E%3C/svg%3E
Tiếp theo, chỉnh sửa tệp '/etc/mongod.conf' bằng trình chỉnh sửa 'nano'.
Bỏ chú thích tùy chọn 'security' và thêm 'authorization: enabled' để bật xác thực trên MongoDB.
Lưu tệp và thoát khỏi trình chỉnh sửa.
Bây giờ hãy chạy lệnh 'systemctl' bên dưới để khởi động lại máy chủ MongoDB và áp dụng các sửa đổi của bạn.
Chạy lệnh 'mongosh' bên dưới để đăng nhập vào máy chủ MongoDB với tư cách là người dùng của 'myAdmin' và nhập mật khẩu của bạn khi được nhắc.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22746%22%20height=%22252%22%3E%3C/svg%3E
Sau khi đăng nhập, hãy chạy truy vấn sau để kiểm tra trạng thái kết nối với máy chủ MongoDB.
Bạn có thể thấy bên dưới rằng bạn đã kết nối với tư cách là người dùng 'myAdmin' với máy chủ MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22700%22%20height=%22296%22%3E%3C/svg%3E
Trước tiên, hãy chạy truy vấn 'use' để tạo và chuyển đổi cơ sở dữ liệu mục tiêu. Trong ví dụ này, bạn sẽ tạo một cơ sở dữ liệu mới 'mydb'. Dấu nhắc MongoDB của bạn sẽ đổi thành 'mydb'.
Bây giờ hãy chạy truy vấn sau để tạo người dùng mới 'myUser' có quyền đọc và ghi vào cơ sở dữ liệu 'mydb'. Nhập mật khẩu mới khi được yêu cầu.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22610%22%20height=%22413%22%3E%3C/svg%3E
Tiếp theo, chạy các truy vấn sau để chuyển đổi cơ sở dữ liệu 'admin' và xác minh danh sách người dùng trên MongoDB của bạn máy chủ.
Bạn sẽ thấy người dùng 'myAdmin' và 'myUser' được tạo như sau:
Bây giờ hãy nhập 'quit()' để thoát khỏi máy chủ MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22743%22%20height=%22616%22%3E%3C/svg%3E
Cuối cùng, hãy đăng nhập vào máy chủ MongoDB với tư cách là người dùng mới 'myUser' vào cơ sở dữ liệu 'mydb' bằng lệnh bên dưới. Nhập mật khẩu của bạn khi được nhắc.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22717%22%20height=%22253%22%3E%3C/svg%3E
Chạy truy vấn bên dưới để kiểm tra mật khẩu hiện tại của bạn kết nối
Trong phần 'authInfo', bạn có thể thấy rằng bạn đã xác thực với tư cách là người dùng 'myUser' và cơ sở dữ liệu 'mydb'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22689%22%20height=%22318%22%3E%3C/svg%3E
MongoDB là một cơ sở dữ liệu NoSQL phân tán có tính khả dụng cao tích hợp, tự động chuyển đổi dự phòng và dự phòng dữ liệu, và khả năng mở rộng theo chiều ngang thông qua phân mảnh trên các cụm phân tán và hỗ trợ triển khai theo địa lý đa vùng. MongoDB cũng cung cấp API truy vấn hỗ trợ các hoạt động CRUD (đọc và ghi), đường ống tổng hợp dữ liệu, tìm kiếm văn bản và truy vấn không gian địa lý.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt MongoDB trên máy chủ Debian 12. Bạn cũng sẽ học cách bật xác thực MongoDB, sử dụng máy khách MongoDB 'mongosh' và sử dụng các truy vấn cơ bản để tạo người dùng và cơ sở dữ liệu mới trong MongoDB.
Điều kiện tiên quyết
Để bắt đầu với hướng dẫn này, hãy đảm bảo bạn có những điều sau:- Máy chủ Debian 12
- Người dùng không phải root có quyền quản trị viên
Chuẩn bị máy chủ Debian
Trước khi cài đặt MongoDB vào máy chủ Debian, bạn nên áp dụng các cài đặt sau:- Tắt các trang lớn trong suốt (THP) thông qua tập lệnh systemd
- Tăng giới hạn mặc định cho người dùng MongoDB
- Bật swapiness và tăng bộ nhớ max_mmap thông qua tệp '/etc/sysctl.conf'
Trước tiên, hãy chạy lệnh 'nano' bên dưới để tạo tệp dịch vụ mới /etc/systemd/system/disable-thp.service.
Mã:
sudo nano /etc/systemd/system/disable-thp.service
Mã:
[Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"
[Install]
WantedBy=multi-user.target
Bây giờ hãy chạy lệnh 'systemctl' sau để tải lại trình quản lý systemd. Sau đó, khởi động và bật dịch vụ 'disable-thp'. Với điều này, 'transparent_hugepage' sẽ bị vô hiệu hóa khi hệ thống khởi động.
Mã:
sudo systemctl daemon-reload
sudo systemctl enable --now disable-thp.service
Mã:
sudo nano /etc/security/limits.d/mongodb.conf
Mã:
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000
Sau đó, hãy chỉnh sửa Tệp '/etc/sysctl.conf' có nội dung sau.
Mã:
sudo nano /etc/sysctl.conf
Mã:
fs.file-max = 2097152
vm.max_map_count = 262144
vm.swappiness = 1
Cuối cùng, chạy lệnh 'sysctl' bên dưới để áp dụng các thay đổi trên Tệp '/etc/sysctl.conf' ngay lập tức.
Mã:
sudo sysctl -p
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22337%22%3E%3C/svg%3E
Cài đặt máy chủ MongoDB trên Debian
Bây giờ bạn đã cấu hình máy chủ Debian của mình, hãy khởi động MongoDB cài đặt. Trong trường hợp này, bạn sẽ cài đặt MongoDB 7.0 thông qua kho lưu trữ MongoDB chính thức vào máy chủ Debian của bạn.Cài đặt các gói 'gnupg' và 'curl' vào hệ thống Debian của bạn bằng lệnh sau:
Mã:
sudo apt install gnupg curl
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22405%22%3E%3C/svg%3E
Bây giờ hãy thêm khóa GPG MongoDB và kho lưu trữ cho Debian bằng lệnh bên dưới. Trong trường hợp này, bạn sẽ thiết lập kho lưu trữ cho MongoDB 7.0.
Mã:
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor
Mã:
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22291%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh 'apt' bên dưới để làm mới danh sách gói của bạn và cài đặt gói 'mongodb-org'.
Mã:
sudo apt update && sudo apt install mongodb-org -y
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22249%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy tải lại trình quản lý systemd bằng lệnh 'systemctl'.
Mã:
sudo systemctl daemon-reload
Mã:
sudo systemctl enable --now mongod
sudo systemctl status mongod
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22300%22%3E%3C/svg%3E
Bảo mật máy chủ MongoDB bằng xác thực
Sau khi MongoDB được cài đặt, bạn cần bảo mật cài đặt của mình bằng cách bật xác thực MongoDB. Trong phần này, bạn sẽ thiết lập xác thực MongoDB và tạo người dùng quản trị mới cho MongoDB. Phần này sẽ chỉ cho bạn cách sử dụng 'mongosh' hoặc máy khách MongoDB và các truy vấn MongoDB cơ bản.Đăng nhập vào máy chủ MongoDB bằng lệnh 'mongosh' bên dưới. Không có mật khẩu cho cài đặt MongoDB mặc định.
Mã:
mongosh
Mã:
disableTelemetry()
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22366%22%20height=%22106%22%3E%3C/svg%3E
Chuyển sang cơ sở dữ liệu 'admin' bằng truy vấn 'use'.
Mã:
use admin
Mã:
db.createUser(
{
user: "myAdmin",
pwd: passwordPrompt(),
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
Mã:
quit()
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22649%22%20height=%22485%22%3E%3C/svg%3E
Tiếp theo, chỉnh sửa tệp '/etc/mongod.conf' bằng trình chỉnh sửa 'nano'.
Mã:
sudo nano /etc/mongod.conf
Mã:
security:
authorization: enabled
Bây giờ hãy chạy lệnh 'systemctl' bên dưới để khởi động lại máy chủ MongoDB và áp dụng các sửa đổi của bạn.
Mã:
sudo systemctl restart mongod
Kiểm tra xác thực MongoDB
Bây giờ bạn đã đã tạo một người dùng quản trị và bật xác thực trên máy chủ MongoDB của bạn. Hãy xác minh cấu hình của bạn bằng cách đăng nhập vào máy chủ MongoDB thông qua người dùng 'myAdmin'.Chạy lệnh 'mongosh' bên dưới để đăng nhập vào máy chủ MongoDB với tư cách là người dùng của 'myAdmin' và nhập mật khẩu của bạn khi được nhắc.
Mã:
mongosh --port 27017 --authenticationDatabase \
"admin" -u "myAdmin" -p
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22746%22%20height=%22252%22%3E%3C/svg%3E
Sau khi đăng nhập, hãy chạy truy vấn sau để kiểm tra trạng thái kết nối với máy chủ MongoDB.
Mã:
db.runCommand({connectionStatus : 1})
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22700%22%20height=%22296%22%3E%3C/svg%3E
Tạo cơ sở dữ liệu và người dùng đầu tiên
Trong phần này, bạn sẽ tạo một cơ sở dữ liệu và người dùng mới sẽ được sử dụng cho ứng dụng của bạn thông qua máy khách MongoDB 'mongosh'. Vì vậy, hãy đảm bảo rằng bạn đang ở trong môi trường 'mongosh'.Trước tiên, hãy chạy truy vấn 'use' để tạo và chuyển đổi cơ sở dữ liệu mục tiêu. Trong ví dụ này, bạn sẽ tạo một cơ sở dữ liệu mới 'mydb'. Dấu nhắc MongoDB của bạn sẽ đổi thành 'mydb'.
Mã:
use mydb
Mã:
use mydb
db.createUser(
{
user: "myUser",
pwd: passwordPrompt(),
roles: [ { role: "readWrite", db: "mydb" },
{ role: "read", db: "reporting" } ]
}
)
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22610%22%20height=%22413%22%3E%3C/svg%3E
Tiếp theo, chạy các truy vấn sau để chuyển đổi cơ sở dữ liệu 'admin' và xác minh danh sách người dùng trên MongoDB của bạn máy chủ.
Mã:
use admin
db.system.users.find()
Bây giờ hãy nhập 'quit()' để thoát khỏi máy chủ MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22743%22%20height=%22616%22%3E%3C/svg%3E
Cuối cùng, hãy đăng nhập vào máy chủ MongoDB với tư cách là người dùng mới 'myUser' vào cơ sở dữ liệu 'mydb' bằng lệnh bên dưới. Nhập mật khẩu của bạn khi được nhắc.
Mã:
mongosh --port 27017 -u "myUser" \
--authenticationDatabase "mydb" -p
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22717%22%20height=%22253%22%3E%3C/svg%3E
Chạy truy vấn bên dưới để kiểm tra mật khẩu hiện tại của bạn kết nối
Mã:
db.runCommand({connectionStatus : 1})
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22689%22%20height=%22318%22%3E%3C/svg%3E