kilobai.comkilobai.com
Trang chủPhần mềmGiới thiệu
Đăng nhậpĐăng ký
kilobai.comkilobai.com

Blog chia sẻ kiến thức về công nghệ và phần mềm, cập nhật những thông tin và nội dung hữu ích cho người dùng.

Giới thiệuQuy địnhBảo mậtLiên hệ
© 2026 kilobai.com
Trang chủ
DevOps17 tháng 4, 20264 phút đọc269 lượt xem

Hướng dẫn thiết lập và kết nối MongoDB từ xa

Tác giả: Kim Chính Ân

Chưa có đánh giá

Đăng nhập để đánh giá bài viết

Hướng dẫn thiết lập và kết nối MongoDB từ xa

Trong nhiều hệ thống hiện đại—đặc biệt là các kiến trúc microservices—MongoDB thường được sử dụng như một lớp lưu trữ dữ liệu chính. Tuy nhiên, nếu bạn từng triển khai MongoDB trong môi trường production, bạn sẽ nhận ra một điều quan trọng:

Không nên chạy database chung server với ứng dụng.

Bài viết này sẽ giúp bạn đi từ tư duy kiến trúc đến cách triển khai thực tế để thiết lập một MongoDB server từ xa và kết nối tới nó một cách an toàn, ổn định.

Vì sao cần tách MongoDB ra server riêng?

Kể từ phiên bản 3.4, MongoDB sử dụng WiredTiger Storage Engine, vốn tiêu thụ RAM khá đáng kể. Cụ thể:

  • MongoDB sẽ sử dụng:

    • 50% RAM (sau khi trừ 1GB)

    • hoặc tối thiểu 256MB
      → lấy giá trị lớn hơn

Điều này có nghĩa là nếu bạn chạy MongoDB cùng server với backend/service, tài nguyên sẽ bị cạnh tranh rất mạnh, dễ gây nghẽn hệ thống.

Giải pháp chuẩn: dùng một server riêng (remote DB server) và để các service kết nối vào.

Tổng quan quy trình thiết lập

Để dựng một MongoDB server từ xa hoàn chỉnh, bạn sẽ đi qua các bước chính:

  1. Tạo server (EC2 hoặc bất kỳ cloud nào)

  2. Tạo user và phân quyền database

  3. Bật cơ chế authentication

  4. Mở port kết nối

  5. Test kết nối từ bên ngoài

1. Tạo server MongoDB

Bạn có thể dùng Amazon Web Services hoặc bất kỳ cloud nào tương tự.

Một số lưu ý quan trọng khi chọn cấu hình:

  • RAM phụ thuộc vào dung lượng dữ liệu

  • Một kinh nghiệm thực tế:

    • 16GB data → cần ~1GB RAM cho cache

    • → tổng RAM nên ít nhất 2GB

Sau khi tạo server:

  • SSH vào máy

  • Cài đặt MongoDB

2. Tạo user và phân quyền

MongoDB hỗ trợ phân quyền rất chi tiết. Bạn nên tách rõ:

User Admin (quyền toàn hệ thống)

use admin;

db.createUser({
  user: "admin",
  pwd: "yourpassword",
  roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" },
    { role: "dbAdminAnyDatabase", db: "admin" }
  ]
});

User này có thể:

  • Tạo user khác

  • Quản lý toàn bộ database

User cho từng database (khuyến nghị)

db.createUser({
  user: "user1",
  pwd: "password",
  roles: [
    { role: "userAdmin", db: "sampledb" },
    { role: "dbAdmin", db: "sampledb" },
    { role: "readWrite", db: "sampledb" }
  ]
});

Best practice:

  • Mỗi database nên có user riêng

  • Tránh dùng admin cho application

3. Bật authentication (bắt buộc trong production)

Mở file config:

sudo vim /etc/mongod.conf

Thêm:

security:
  authorization: enabled

Sau bước này:

  • MongoDB sẽ bắt buộc login bằng user

  • Không còn truy cập tự do

4. Cho phép kết nối từ xa

Mặc định MongoDB chỉ cho phép localhost.

Bạn cần sửa:

net:
  port: 27017
  bindIp: 0.0.0.0

Ý nghĩa:

  • Cho phép kết nối từ mọi IP

Sau đó restart:

sudo service mongod restart

5. Mở port trên server

MongoDB dùng port mặc định:

27017

Bạn cần:

  • Mở port trong Security Group (AWS)

  • Hoặc dùng iptables:

sudo iptables -A INPUT -p tcp --destination-port 27017 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --source-port 27017 -j ACCEPT

6. Test kết nối từ máy local

Từ máy local:

mongo -u user1 -p password <server_ip>/sampledb

Nếu kết nối thành công → hệ thống đã hoạt động.

Một số lưu ý thực tế (quan trọng)

1. Không mở port public 100%

  • Tránh 0.0.0.0 + open toàn bộ internet
    Nên:

    • whitelist IP backend

    • hoặc dùng VPN / private network

2. Lỗi kết nối thường gặp

Dù setup đúng, bạn vẫn có thể gặp lỗi từ driver:

  • Node.js → mongoose

  • Python → pymongo

  • Go → mgo

Nguyên nhân thường do:

  • connection string sai

  • authSource thiếu

  • network firewall

3. Production nên làm thêm

  • TLS / SSL cho MongoDB

  • Replica Set (HA)

  • Backup định kỳ

  • Monitoring (Prometheus / Grafana)


Kết luận

Việc tách MongoDB ra thành một server riêng không chỉ là best practice mà gần như là bắt buộc nếu bạn muốn hệ thống:

  • ổn định

  • dễ scale

  • dễ kiểm soát bảo mật

Một khi đã setup đúng từ đầu, bạn sẽ tránh được rất nhiều vấn đề về hiệu năng và vận hành sau này.

#mongodb#deploy
Kim Chính Ân

Kim Chính Ân

Founder tại kilobai.com

Kết nối với mình qua
Chào các "đồng môn" trên hành trình chinh phục những dòng code! Là một người viết blog công nghệ, tôi luôn tin rằng công cụ không chỉ là vật vô tri, chúng là đôi cánh của tư duy. Và năm 2026 này, đôi cánh ấy đang trở nên mạnh mẽ hơn bao giờ hết.

Bình luận (0)

Đăng nhập để bình luận và đánh giá. Chưa có tài khoản? Đăng ký

Chưa có bình luận nào. Hãy là người đầu tiên!

Nội dung