Cách cài đặt và bảo mật MongoDB trên Ubuntu 24.04

theanh

Administrator
Nhân viên
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. Nó hỗ trợ triển khai theo địa lý đa vùng và 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, chúng tôi sẽ chỉ cho bạn cách cài đặt MongoDB trên máy chủ Ubuntu 24.04. Bạn sẽ chuẩn bị máy chủ Ubuntu, thêm kho lưu trữ MongoDB, cài đặt máy chủ MongoDB, tạo quản trị viên cho MongoDB, sau đó bật xác thực MongoDB. Cuối cùng, bạn sẽ học cách tạo người dùng và cơ sở dữ liệu trong MongoDB bằng shell 'mongosh'.

Điều kiện tiên quyết​

Trước khi bắt đầu, hãy đảm bảo bạn có những điều sau:
  • Máy chủ Ubuntu 24.04
  • Người dùng không phải root có quyền quản trị viên

Chuẩn bị hệ thống​

Trước khi cài đặt MongoDB trên hệ thống Ubuntu, hãy đảm bảo bạn đã định cấu hình hệ thống của mình. Trong trường hợp này, bạn sẽ cấu hình máy chủ Ubuntu bằng lệnh sau:
  • Vô hiệu hóa Transparent Huge Pages thông qua systemd
  • Tăng giới hạn cho người dùng 'mongod' MongoDB mặc định
  • Thiết lập fs.file-max tối đa và bật swappiness thông qua tệp '/etc/systctl.conf'

Vô hiệu hóa Transparent Huge Pages (THP)​

Để vô hiệu hóa THP trên hệ thống của bạn, bạn sẽ tạo một tệp dịch vụ systemd mới sẽ được thực thi tự động tại mỗi lần khởi động hoặc khởi động lại.

Tạo một tệp dịch vụ mới '/etc/systemd/system/disable-thp.service' với 'nano' biên tập viên.
Mã:
sudo nano /etc/systemd/system/disable-thp.service
Chèn cấu hình sau để vô hiệu hóa THP thông qua dịch vụ.
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
Lưu tệp và thoát khỏi trình biên tập.

Bây giờ hãy chạy lệnh 'systemctl' bên dưới để tải lại trình quản lý systemd, khởi động và bật 'disable-thp' dịch vụ. Với điều này, THP sẽ bị vô hiệu hóa khi khởi động hệ thống.
Mã:
sudo systemctl daemon-reload
sudo systemctl enable --now disable-thp.service

Thiết lập Ulimits​

Sau khi bạn đã vô hiệu hóa THP, bạn cần tăng tệp và quy trình mặc định tối đa cho người dùng 'mongod' lên ít nhất là '64000'.

Tạo tệp mới '/etc/security/limits.d/mongodb.conf' bằng trình chỉnh sửa 'nano' sau lệnh.
Mã:
sudo nano /etc/security/limits.d/mongodb.conf
Chèn cấu hình sau để tăng số lượng tệp mở và xử lý tối đa lên '64000'.
Mã:
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000
Lưu tệp và thoát khỏi trình chỉnh sửa.

Thiết lập swappiness và fs.file-max​

Cuối cùng, bạn sẽ cần tăng 'fs.file-max' mặc định và bật swappiness cho MongoDB. Để thực hiện điều đó, bạn sẽ chỉnh sửa tệp '/etc/sysctl.conf'.

Mở tệp '/etc/sysctl.conf' bằng lệnh trình chỉnh sửa 'nano'.
Mã:
sudo nano /etc/sysctl.conf
Chèn cấu hình sau để thiết lập fs.file-max và bật swappiness.
Mã:
fs.file-max = 2097152
vm.max_map_count = 262144
vm.swappiness = 1
Khi hoàn tất, hãy lưu tệp và thoát khỏi trình chỉnh sửa.

Bây giờ hãy chạy lệnh 'sysctl' bên dưới để áp dụng các thay đổi của bạn mà không cần khởi động lại.
Mã:
sudo sysctl -p

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22289%22%3E%3C/svg%3E

Cài đặt MongoDB bằng trình quản lý gói APT​

Bây giờ bạn đã cấu hình hệ thống Ubuntu của mình, bạn đã sẵn sàng để cài đặt MongoDB. Trong phần này, bạn sẽ cài đặt phiên bản mới nhất của MongoDB 8.0 từ kho lưu trữ MongoDB chính thức.

Đầu tiên, hãy chạy lệnh 'apt' bên dưới để cập nhật chỉ mục gói Ubuntu của bạn và cài đặt các gói 'gnupg' và 'curl'. Nhập 'Y' để xác nhận cài đặt.
Mã:
sudo apt update && sudo apt install gnupg curl

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22444%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh sau để thêm khóa GPG và kho lưu trữ cho MongoDB. Trong ví dụ này, bạn sẽ cài đặt MongoDB 8 trên máy chủ Ubuntu 24.04 của mình.
Mã:
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
Mã:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22165%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh 'apt' bên dưới để cập nhật chỉ mục gói của bạn và cài đặt gói 'mongodb-org' vào hệ thống của bạn. Nhập 'Y' để tiếp tục cài đặt.
Mã:
sudo apt update && sudo apt install mongodb-org

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22323%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy thực hiện lệnh 'systemctl' bên dưới để tải lại trình quản lý systemd. Dịch vụ 'mongod' đã được thêm vào hệ thống Ubuntu của bạn.
Mã:
sudo systemctl daemon-reload
Cuối cùng, hãy chạy lệnh bên dưới để khởi động, kích hoạt và xác minh dịch vụ 'mongod' của MongoDB. Bạn sẽ thấy MongoDB đang chạy trên hệ thống của bạn.
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=%22310%22%3E%3C/svg%3E

Bảo mật máy chủ MongoDB​

Sau khi cài đặt MongoDB, bạn sẽ bảo mật cài đặt máy chủ MongoDB bằng sau đây:
  • Tạo người dùng quản trị mới cho MongoDB bằng shell 'mongosh'
  • Bật xác thực MongoDB bằng cách chỉnh sửa tệp cấu hình '/etc/mongod.conf'

Tạo người dùng quản trị MongoDB​

Trong phần này, bạn sẽ tạo người dùng quản trị viên MongoDB mới thông qua shell 'mongosh'. Shell 'mongosh' là dòng lệnh máy khách để tương tác với máy chủ MongoDB, giống như 'mysql' đối với MySQL/MariaDB và 'psql' đối với PostgreSQL.

Để tạo người dùng quản trị, hãy đăng nhập vào máy chủ MongoDB bằng lệnh shell 'mongosh' bên dưới.
Mã:
mongosh
Bây giờ hãy chạy truy vấn sau để tắt MongoDB telemetry.
Mã:
disableTelemetry()

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22545%22%3E%3C/svg%3E


Tiếp theo, hãy đến cơ sở dữ liệu 'admin' và chạy các truy vấn sau để tạo người dùng quản trị mới cho MongoDB. Trong ví dụ này, bạn sẽ tạo một người dùng mới 'myAdmin', sau đó nhập mật khẩu mới khi được nhắc.
Mã:
use admin
Mã:
db.createUser(
{
user: "myAdmin",
pwd: passwordPrompt(),
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
Bây giờ hãy nhập 'quit()' để thoát khỏi shell MongoDB.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22586%22%20height=%22474%22%3E%3C/svg%3E

Bật xác thực MongoDB​

Bây giờ bạn đã tạo người dùng quản trị MongoDB, bạn đã sẵn sàng bật xác thực MongoDB thông qua tệp '/etc/mongod.conf'.

Mở cấu hình máy chủ MongoDB mặc định '/etc/mongod.conf' bằng trình soạn thảo 'nano' sau lệnh.
Mã:
sudo nano /etc/mongod.conf
Thêm các dòng sau để bật xác thực trong MongoDB.
Mã:
security:
 authorization: enabled
Khi hoàn tất, hãy 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 thay đổi của bạn. Với lệnh này, xác thực MongoDB sẽ được bật.
Mã:
sudo systemctl restart mongod

Kiểm tra xác thực MongoDB​

Bây giờ bạn đã bảo mật cài đặt máy chủ MongoDB, hãy xác minh cấu hình của bạn bằng cách đăng nhập vào MongoDB bằng shell 'mongosh' và tên người dùng và mật khẩu quản trị viên mới.

Đăng nhập vào máy chủ MongoDB với tư cách là người dùng 'myAdmin' bằng lệnh 'mongosh' bên dưới. 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=%22750%22%20height=%22331%22%3E%3C/svg%3E


Sau khi đăng nhập, hãy chạy truy vấn bên dưới để kiểm tra trạng thái kết nối của bạn. Bạn phải đăng nhập vào máy chủ MongoDB bằng người dùng 'myAdmin'.
Mã:
db.runCommand({connectionStatus : 1})
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=%22651%22%20height=%22301%22%3E%3C/svg%3E

Tạo cơ sở dữ liệu và người dùng trong MongoDB​

Trong phần này, bạn sẽ học cách tạo cơ sở dữ liệu và người dùng mới trong MongoDB bằng shell 'mongosh'. Vì vậy, hãy đảm bảo rằng bạn đã đăng nhập vào MongoDB với tư cách là người dùng quản trị viên.

Trước tiên, hãy chạy truy vấn bên dưới để di chuyển đến cơ sở dữ liệu 'mydb'.
Mã:
use mydb
Bây giờ hãy chạy truy vấn sau để tạo người dùng mới 'myUser' và cho phép quyền truy cập đọc và ghi vào cơ sở dữ liệu 'mydb'. Nhập mật khẩu khi được yêu cầu.
Mã:
db.createUser(
{
user: "myUser",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "readWrite", db: "mydb" },
{ role: "read", db: "reporting" } ]
}
)
Gõ 'quit()' để thoát khỏi máy chủ MongoDB.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22574%22%20height=%22373%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh 'mongosh' bên dưới để đăng nhập với tư cách là 'myUser' vào cơ sở dữ liệu 'mydb'. Nhập mật khẩu của bạn khi được nhắc.
Mã:
mongosh --port 27017 --authenticationDatabase \
"mydb" -u "myUser" -p

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22193%22%3E%3C/svg%3E


Sau khi đăng nhập, hãy kiểm tra trạng thái kết nối của bạn bằng cách sử dụng lệnh sau truy vấn.
Mã:
db.runCommand({connectionStatus : 1})
Bạn có thể thấy bên dưới rằng bạn đã kết nối với máy chủ MongoDB với người dùng 'myUser' và các đặc quyền đối với cơ sở dữ liệu 'mydb'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22643%22%20height=%22289%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng! Bạn đã hoàn tất cài đặt máy chủ MongoDB trên máy chủ Ubuntu 24.04. Bạn cũng đã tạo người dùng quản trị viên và cài đặt MongoDB an toàn. Sau đó, bạn đã học cách sử dụng 'mongosh' để kết nối với máy chủ MongoDB và các truy vấn cơ bản để quản lý người dùng và cơ sở dữ liệu trong MongoDB.
 
Back
Bên trên