Skip to main content

🍃 Cài Đặt MongoDB trên Ubuntu 20.04

📋 Chuẩn Bị

Yêu Cầu Hệ Thống

  • Ubuntu 20.04 LTS
  • Quyền sudo
  • Kết nối internet

🚀 Các Bước Cài Đặt

1. Thêm Repository MongoDB

# Nhập khóa công khai
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor

# Thêm MongoDB Repository (Community Edition)
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

# Hoặc MongoDB Enterprise Edition
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.com/apt/ubuntu focal/mongodb-enterprise/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-enterprise-7.0.list

# Cập nhật package index
sudo apt update

2. Cài Đặt MongoDB

a. Cài đặt Community Edition

# Cài đặt MongoDB
sudo apt-get install -y mongodb-org

# Khóa phiên bản
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-database hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-mongosh hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

b. Cài đặt Enterprise Edition

# Cài đặt MongoDB Enterprise
sudo apt-get install -y mongodb-enterprise

# Cài đặt phiên bản cụ thể
sudo apt-get install -y mongodb-enterprise=7.0.3 mongodb-enterprise-database=7.0.3 mongodb-enterprise-server=7.0.3 mongodb-mongosh=7.0.3 mongodb-enterprise-mongos=7.0.3 mongodb-enterprise-tools=7.0.3

# Khóa phiên bản
echo "mongodb-enterprise hold" | sudo dpkg --set-selections
echo "mongodb-enterprise-server hold" | sudo dpkg --set-selections
echo "mongodb-enterprise-database hold" | sudo dpkg --set-selections
echo "mongodb-mongosh hold" | sudo dpkg --set-selections
echo "mongodb-enterprise-mongos hold" | sudo dpkg --set-selections
echo "mongodb-enterprise-tools hold" | sudo dpkg --set-selections

3. Khởi Động và Kiểm Tra

# Khởi động MongoDB
sudo systemctl start mongod.service

# Kiểm tra trạng thái
sudo systemctl status mongod

# Bật MongoDB khi khởi động
sudo systemctl enable mongod

# Kết nối MongoDB shell
mongosh

4. Cấu Hình Bảo Mật Cơ Bản

Cảnh báo bảo mật

Nếu bạn đang cài đặt MongoDB cho môi trường production hoặc nhiều node:

  1. Luôn bật chế độ xác thực trước khi cho phép remote access
  2. Tạo keyfile để bảo mật giao tiếp giữa các node
  3. Cấu hình firewall chỉ cho phép các IP được tin cậy

a. Tạo User Admin

use admin

// Cho MongoDB 6.0+
db.createUser(
{
user: "mongoadmin",
pwd: "<your_password>", // Thay thế bằng mật khẩu mạnh
roles: [{ role: "root", db: "admin" }],
mechanisms: ["SCRAM-SHA-256"],
passwordDigestor: "server"
}
);

b. Bật Xác Thực và Cấu Hình Network

sudo nano /etc/mongod.conf
# Network Interface
net:
port: 27017
bindIp: 127.0.0.1 # Thay đổi thành 0.0.0.0 nếu cần remote access

# Bảo Mật
security:
authorization: enabled

Cấu hình Network

Lưu ý khi cài đặt nhiều node
  1. Tạo keyfile cho xác thực giữa các node:
# Tạo keyfile
sudo openssl rand -base64 741 > /opt/mongodb/keyfile
sudo chmod 400 /opt/mongodb/keyfile
sudo chown mongodb:mongodb /opt/mongodb/keyfile
  1. Sao chép keyfile sang các node khác với cùng permission. Bạn có thể tham khảo hướng dẫn chi tiết về cách truyền file qua SSH tại đây.
  2. Đảm bảo tất cả node đều sử dụng cùng một keyfile.
  3. Khởi động lại MongoDB sau khi cấu hình.

5. Khởi Động Lại MongoDB

# Khởi động lại MongoDB
sudo systemctl restart mongod

🔍 Xử Lý Sự Cố

1. Kiểm tra Log

sudo tail -f /var/log/mongodb/mongod.log

2. Vấn Đề Kết Nối

  • Kiểm tra status service
  • Xác nhận cấu hình bindIP
  • Kiểm tra firewall (port 27017)
  • Xác nhận keyfile permissions (khi dùng nhiều node)
  • Kiểm tra network connectivity giữa các node

3. Vấn Đề Bảo Mật

  • Xác nhận quyền truy cập của keyfile
  • Kiểm tra cấu hình authorization
  • Xác minh user privileges
  • Kiểm tra SSL/TLS certificates (nếu được sử dụng)
Lưu ý quan trọng
  1. Không bao giờ sử dụng mật khẩu mặc định
  2. Thay đổi port mặc định 27017 nếu có thể
  3. Luôn backup keyfile và lưu trữ an toàn
  4. Định kỳ rotate các credentials và keyfile
  5. Monitoring các lần truy cập không thành công

📚 Tài Liệu Tham Khảo