Cách cài đặt MongoDB trên Debian 12

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 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'
Bây giờ chúng ta hãy cấu hình máy chủ Debian.

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
Dán tập lệnh dịch vụ sau để thiết lập 'transparent_hugepage' thành 'không bao giờ'.
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.

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
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.
Mã:
sudo nano /etc/security/limits.d/mongodb.conf
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'.
Mã:
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000
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.
Mã:
sudo nano /etc/sysctl.conf
Chèn cấu hình bên dưới vào cuối dòng.
Mã:
fs.file-max = 2097152
vm.max_map_count = 262144
vm.swappiness = 1
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.
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
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'.
Mã:
sudo systemctl daemon-reload
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.
Mã:
sudo systemctl enable --now mongod
sudo systemctl status mongod
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

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
Chạy lệnh 'disableTelemetry()' để tắt tính năng thu thập dữ liệu ẩn danh khỏi MongoDB.
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
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.
Mã:
db.createUser(
{
user: "myAdmin",
pwd: passwordPrompt(),
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
Gõ lệnh 'quit()' để thoát khỏi máy chủ MongoDB.
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
Bỏ chú thích tùy chọn 'security' và thêm 'authorization: enabled' để bật xác thực trên MongoDB.
Mã:
security:
 authorization: enabled
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.
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})
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

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
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.
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ạ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.
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})
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

Kết luận​

Xin chúc mừng! Bạn đã hoàn tất cài đặt MongoDB 7.0 trên máy chủ Debian 12. Bạn cũng đã học cách bảo mật máy chủ MongoDB bằng cách bật xác thực, sau đó tạo người dùng quản trị mới cho MongoDB. Cuối cùng, bạn đã học cách tạo cơ sở dữ liệu MongoDB và người dùng mới cho các ứng dụng của mình.
 
Back
Bên trên