نحوه پیکربندی دسترسی از راه دور به MongoDB در Ubuntu 20.04

مقدمه

MongoDB یک پایگاه داده سندمحور (Document-Oriented) است که در بسیاری از برنامه‌های وب مدرن استفاده می‌شود. به‌صورت پیش‌فرض، MongoDB فقط اتصال‌هایی را می‌پذیرد که از همان سروری که روی آن نصب شده‌اند برقرار شوند. اگر بخواهید MongoDB را از راه دور مدیریت کنید یا آن را به یک سرور برنامه (Application Server) جداگانه متصل کنید، باید چند تغییر در تنظیمات پیش‌فرض آن ایجاد کنید.

در این آموزش یاد می‌گیرید چگونه یک نصب MongoDB را به‌صورت امن برای دسترسی از یک رایانه راه دور مورد اعتماد پیکربندی کنید. برای این کار:

  • قوانین فایروال را به‌روزرسانی می‌کنید تا سیستم راه دور به پورت MongoDB دسترسی داشته باشد.
  • فایل پیکربندی MongoDB را ویرایش می‌کنید تا روی آدرس IP عمومی نیز گوش دهد.
  • در نهایت اتصال از راه دور را آزمایش می‌کنید.

پیش‌نیازها

برای دنبال کردن این آموزش به موارد زیر نیاز دارید:

  • یک سرور Ubuntu 20.04
  • یک کاربر غیر Root با دسترسی sudo
  • فعال بودن فایروال UFW
  • نصب MongoDB نسخه 4.4 یا جدیدتر
  • یک رایانه یا سرور دوم برای اتصال به MongoDB

توصیه می‌شود قبل از فعال کردن دسترسی از راه دور، احراز هویت MongoDB را فعال کرده و یک کاربر مدیریتی ایجاد کنید.


مرحله اول: تنظیم فایروال

اگر UFW فعال باشد، MongoDB از اینترنت قابل دسترس نخواهد بود. برای اجازه دادن به یک سیستم خاص، ابتدا پورت مورد استفاده MongoDB را بررسی کنید:

sudo lsof -i | grep mongo

نمونه خروجی:

mongod 82221 mongodb 11u IPv4 913411 0t0 TCP localhost:27017 (LISTEN)

در این مثال MongoDB روی پورت پیش‌فرض 27017 در حال اجرا است.

حال دسترسی را فقط برای یک IP مشخص مجاز کنید:

sudo ufw allow from trusted_machine_ip to any port 27017

به جای trusted_machine_ip آدرس IP سیستم مورد اعتماد را وارد کنید.

مشاهده قوانین فایروال

sudo ufw status

نمونه خروجی:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
27017                      ALLOW       trusted_machine_ip
OpenSSH (v6)               ALLOW       Anywhere (v6)

مرحله دوم: تنظیم bindIp عمومی

حتی اگر پورت باز باشد، MongoDB به‌صورت پیش‌فرض فقط روی آدرس:

127.0.0.1

گوش می‌دهد.

فایل تنظیمات را باز کنید:

sudo nano /etc/mongod.conf

بخش زیر را پیدا کنید:

net:
  port: 27017
  bindIp: 127.0.0.1

و آن را به شکل زیر تغییر دهید:

net:
  port: 27017
  bindIp: 127.0.0.1,mongodb_server_ip

به جای mongodb_server_ip آدرس IP عمومی سرور MongoDB را وارد کنید.

فایل را ذخیره کرده و MongoDB را ریستارت کنید:

sudo systemctl restart mongod

اکنون MongoDB می‌تواند درخواست‌های ورودی از سیستم‌های مجاز را دریافت کند.


مرحله سوم: آزمایش اتصال از راه دور

به سرور یا کامپیوتر مورد اعتماد متصل شوید:

ssh sammy@trusted_machine_ip

سپس اتصال به پورت MongoDB را بررسی کنید:

nc -zv mongodb_server_ip 27017

نمونه خروجی موفق:

Connection to mongodb_server_ip 27017 port [tcp/*] succeeded!

این خروجی نشان می‌دهد که ارتباط شبکه‌ای با MongoDB برقرار شده است.


اتصال با Mongo Shell

اگر Mongo Shell روی سیستم راه دور نصب شده باشد، می‌توانید مستقیماً متصل شوید:

mongo "mongodb://mongo_server_ip:27017"

اگر احراز هویت فعال باشد:

mongo "mongodb://username@mongo_server_ip:27017"

سپس رمز عبور کاربر را وارد کنید.


نتیجه‌گیری

در این آموزش یاد گرفتید چگونه:

  • فایروال UFW را برای MongoDB پیکربندی کنید.
  • تنظیم bindIp را تغییر دهید.
  • اتصال از راه دور را آزمایش کنید.
  • از طریق Mongo Shell به پایگاه داده متصل شوید.

پس از انجام این مراحل می‌توانید MongoDB را از یک سرور یا سیستم مورد اعتماد مدیریت کنید یا آن را به برنامه‌های مستقر روی سرورهای دیگر متصل نمایید.

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *