مقدمه
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 را از یک سرور یا سیستم مورد اعتماد مدیریت کنید یا آن را به برنامههای مستقر روی سرورهای دیگر متصل نمایید.
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران