🍃 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:
- Luôn bật chế độ xác thực trước khi cho phép remote access
- Tạo keyfile để bảo mật giao tiếp giữa các node
- 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
Lưu ý khi cài đặt nhiều node
- 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
- 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.
- Đảm bảo tất cả node đều sử dụng cùng một keyfile.
- 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
- Không bao giờ sử dụng mật khẩu mặc định
- Thay đổi port mặc định 27017 nếu có thể
- Luôn backup keyfile và lưu trữ an toàn
- Định kỳ rotate các credentials và keyfile
- Monitoring các lần truy cập không thành công