وقتی دیتابیس MySQL روی یک سرور جداگانه نصب شده باشد، مثلاً در یک هاست ابری، سرور لینوکسی، یا محیط تست، برای مدیریت، توسعه یا اجرای تستها نیاز داریم از راه دور به آن متصل شویم. این نوع اتصال به ما اجازه میدهد بدون ورود مستقیم به سرور، دادهها را بررسی، ویرایش یا تحلیل کنیم.
اتصال از راه دور کاربردهای زیادی دارد:
- استفاده از ابزارهای گرافیکی مثل MySQL Workbench یا DBeaver برای مدیریت آسانتر
- اجرای تستهای اتوماسیون از محیطهای CI/CD یا لوکال
- اتصال چند اپلیکیشن یا سرویس به یک دیتابیس مرکزی
اما این اتصال برخلاف اتصال محلی، نیازمند تنظیمات دقیق و رعایت نکات امنیتی است. در این آموزش، مرحلهبهمرحله یاد میگیرید چگونه اتصال از راه دور را فعال کنید، کاربر مناسب بسازید، پورتها را تنظیم کنید، و در نهایت با خیال راحت و امن به دیتابیس MySQL متصل شوید.
پیشنیازها
برای اینکه بتوانید بهدرستی به دیتابیس MySQL از راه دور متصل شوید، ابتدا باید چند پیشنیاز مهم را فراهم کنید. این موارد پایهای هستند و بدون آنها مراحل بعدی با خطا مواجه خواهند شد:
- نصب و راهاندازی MySQL روی سرور مقصد (لینوکس، ویندوز یا هاست اشتراکی)
- دسترسی به سرور از طریق SSH، کنترل پنل یا ابزار مدیریت هاست
- آشنایی مقدماتی با دستورهای MySQL و توانایی اجرای آنها در محیط ترمینال یا ابزارهای GUI
- اطلاعات مربوط به نام دیتابیس، نام کاربری و رمز عبور برای اتصال
- دسترسی به تنظیمات فایروال یا پورتها در سرور یا هاست، برای باز کردن پورت 3306
اگر این پیشنیازها را دارید، میتوانید با خیال راحت مراحل فعالسازی اتصال از راه دور را آغاز کنید.
مرحله ۱: فعالسازی اتصال از راه دور در MySQL
بهصورت پیشفرض، MySQL فقط به اتصالات محلی (localhost) اجازه میدهد. این یعنی اگر بخواهید از یک سیستم دیگر به دیتابیس متصل شوید، با خطا مواجه خواهید شد. برای فعالسازی اتصال از راه دور، باید تنظیمات سرویس MySQL را تغییر دهید تا به درخواستهایی که از خارج از سرور میآیند نیز پاسخ دهد. این مرحله شامل ویرایش فایل پیکربندی، بررسی آدرسهای bind شده، و ریاستارت سرویس است.
۱.۱ پیدا کردن فایل پیکربندی MySQL
در اکثر توزیعهای لینوکس، فایل پیکربندی MySQL در مسیر زیر قرار دارد:
/etc/mysql/mysql.conf.d/mysqld.cnf
در برخی نسخهها یا توزیعها ممکن است نام فایل متفاوت باشد، مانند:
/etc/my.cnf
/etc/mysql/my.cnf
برای ویرایش فایل، از ویرایشگر متنی مثل nano یا vim استفاده کنید:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
۱.۲ تغییر مقدار bind-address
در فایل پیکربندی، دنبال خطی بگردید که شامل bind-address است. بهصورت پیشفرض مقدار آن معمولاً برابر با 127.0.0.1 است که فقط اجازه اتصال محلی را میدهد.
bind-address = 127.0.0.1
برای فعالسازی اتصال از راه دور، مقدار آن را به 0.0.0.0 تغییر دهید:
bind-address = 0.0.0.0
این تغییر باعث میشود MySQL به تمام آدرسهای IP گوش دهد و درخواستهای ورودی از راه دور را نیز بپذیرد.
۱.۳ ذخیره تغییرات و ریاستارت سرویس MySQL
پس از اعمال تغییرات، فایل را ذخیره کرده و از ویرایشگر خارج شوید. سپس سرویس MySQL را ریاستارت کنید تا تنظیمات جدید اعمال شوند:
sudo systemctl restart mysql
اگر از نسخههای قدیمیتر استفاده میکنید، ممکن است دستور زیر لازم باشد:
sudo service mysql restart
۱.۴ بررسی فعال بودن پورت 3306
برای اطمینان از اینکه MySQL در حال گوش دادن به پورت 3306 است، میتوانید از دستور زیر استفاده کنید:
sudo netstat -tulnp | grep 3306
یا در سیستمهایی که netstat نصب نیست:
sudo ss -tulnp | grep 3306
اگر خروجی نشان دهد که MySQL در حال گوش دادن روی 0.0.0.0:3306 یا :::3306 است، یعنی تنظیمات بهدرستی اعمال شدهاند.
در این مرحله، شما MySQL را آماده کردهاید تا از راه دور قابل دسترسی باشد. اما هنوز باید کاربر مناسب بسازید و دسترسیهای لازم را تعریف کنید.
مرحله ۲: ایجاد کاربر با دسترسی از راه دور
پس از فعالسازی اتصال از راه دور در MySQL، باید یک کاربر جدید تعریف کنید که مجاز باشد از بیرون سرور به دیتابیس متصل شود. در حالت پیشفرض، کاربران MySQL فقط از همان سروری که دیتابیس روی آن نصب شده قابل استفاده هستند. برای اتصال از راه دور، باید کاربری بسازید که مجوز اتصال از IPهای دیگر را داشته باشد و دسترسی لازم به دیتابیس مورد نظر را نیز داشته باشد.
۲.۱ ساخت کاربر با مجوز اتصال از راه دور
برای ساخت کاربر، وارد محیط MySQL شوید:
mysql -u root -p
سپس دستور زیر را اجرا کنید تا یک کاربر جدید با دسترسی از همه IPها ساخته شود:
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!';
در این دستور:
'remote_user'نام کاربری دلخواه شماست'%'به معنی اجازه اتصال از هر IP است (میتوانید بهجای آن IP خاصی مثل'192.168.1.100'قرار دهید)'StrongPassword123!'رمز عبور امن برای کاربر است
۲.۲ اعطای دسترسی به دیتابیس
پس از ساخت کاربر، باید مجوزهای لازم را به او بدهید تا بتواند به دیتابیس مورد نظر دسترسی داشته باشد. فرض کنیم نام دیتابیس شما my_database است:
GRANT ALL PRIVILEGES ON my_database.* TO 'remote_user'@'%'; FLUSH PRIVILEGES;
این دستور به کاربر اجازه میدهد تمام عملیات (خواندن، نوشتن، حذف، ویرایش) را روی دیتابیس my_database انجام دهد.
۲.۳ بررسی مجوزها و امنیت
برای امنیت بیشتر، توصیه میشود:
- بهجای
%از IP مشخص استفاده کنید تا فقط سیستمهای خاص بتوانند متصل شوند - از رمزهای عبور قوی و غیرقابل حدس استفاده کنید
- در صورت نیاز، مجوزها را محدودتر تعریف کنید (مثلاً فقط
SELECTیاINSERT)
مثال برای مجوز محدودتر:
GRANT SELECT, INSERT ON my_database.* TO 'remote_user'@'192.168.1.100';
در پایان این مرحله، شما یک کاربر با دسترسی از راه دور دارید که میتواند به دیتابیس متصل شود. در مرحله بعدی، باید مطمئن شوید که پورتهای لازم در فایروال باز هستند تا اتصال برقرار شود.
مرحله ۳: تنظیم فایروال و پورتها
حتی اگر MySQL بهدرستی برای اتصال از راه دور پیکربندی شده باشد و کاربر مجاز نیز تعریف شده باشد، باز هم ممکن است اتصال برقرار نشود، چرا که فایروال سرور یا هاست ممکن است پورت مربوط به MySQL را مسدود کرده باشد. در این مرحله، باید مطمئن شوید که پورت 3306 (پورت پیشفرض MySQL) برای ارتباطات ورودی باز است و هیچ محدودیتی از سمت سیستمعامل یا سرویسدهنده وجود ندارد.
۳.۱ بررسی وضعیت پورت 3306
برای بررسی اینکه آیا پورت 3306 باز است یا خیر، میتوانید از دستور زیر استفاده کنید:
sudo ufw status
اگر از iptables استفاده میکنید:
sudo iptables -L -n
همچنین میتوانید با استفاده از ابزار netstat یا ss بررسی کنید که آیا MySQL در حال گوش دادن روی این پورت هست یا نه:
sudo netstat -tulnp | grep 3306
یا:
sudo ss -tulnp | grep 3306
۳.۲ باز کردن پورت در فایروال
اگر فایروال فعال است و پورت 3306 بسته است، باید آن را باز کنید. در سیستمهایی که از ufw استفاده میکنند:
sudo ufw allow 3306
در سیستمهایی که از firewalld استفاده میکنند:
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
در iptables:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
۳.۳ بررسی تنظیمات هاست یا سرویسدهنده
اگر از هاست اشتراکی یا VPS استفاده میکنید، ممکن است تنظیمات فایروال از طریق پنل مدیریت (مثل cPanel ،Plesk یا پنل اختصاصی سرویسدهنده) قابل کنترل باشد. در این صورت باید وارد پنل شوید و مطمئن شوید که پورت 3306 برای IPهای مورد نظر باز است.
برخی سرویسدهندهها بهصورت پیشفرض اتصال از راه دور را غیرفعال میکنند. در این حالت باید از پشتیبانی بخواهید که این قابلیت را برای شما فعال کند یا از طریق تنظیمات پنل، IPهای مجاز را اضافه کنید.
۳.۴ تست اتصال از بیرون
پس از باز کردن پورت، میتوانید از سیستم دیگر تست کنید که آیا پورت باز است یا نه:
telnet server_ip 3306
یا:
nc -zv server_ip 3306
اگر اتصال برقرار شد، یعنی پورت باز است و MySQL آماده دریافت درخواستهای راه دور است.
در پایان این مرحله، مسیر ارتباطی بین کلاینت و سرور باز شده و آماده اتصال است.
مرحله ۴: تست اتصال از کلاینت یا ابزارهای گرافیکی
پس از انجام تنظیمات سرور، ساخت کاربر و باز کردن پورتها، نوبت به تست اتصال از راه دور میرسد. این مرحله برای اطمینان از صحت تنظیمات و آمادگی سرور برای دریافت درخواستهای خارجی ضروری است. شما میتوانید از خط فرمان یا ابزارهای گرافیکی (GUI) برای تست اتصال استفاده کنید.
۴.۱ تست اتصال با خط فرمان (CLI)
اگر روی سیستم خود MySQL نصب کردهاید، میتوانید با دستور زیر از راه دور به سرور متصل شوید:
mysql -u remote_user -p -h server_ip
در این دستور:
remote_userنام کاربریای است که در مرحله قبل ساختیدserver_ipآدرس IP یا دامنه سروری است که MySQL روی آن نصب شده- پس از اجرای دستور، از شما رمز عبور خواسته میشود
اگر اتصال موفق باشد، وارد محیط MySQL میشوید و میتوانید دستوراتی مثل SHOW DATABASES; یا SELECT اجرا کنید.
۴.۲ تست اتصال با ابزارهای گرافیکی (GUI)
برای کسانی که ترجیح میدهند با رابط کاربری گرافیکی کار کنند، ابزارهای زیر گزینههای مناسبی هستند:
MySQL Workbench
- باز کردن برنامه و انتخاب گزینه “New Connection”
- وارد کردن:
- نام اتصال دلخواه
- آدرس IP یا دامنه سرور
- نام کاربری و رمز عبور
- پورت (معمولاً 3306)
- تست اتصال با دکمه “Test Connection”
DBeaver
- انتخاب “New Database Connection”
- انتخاب نوع دیتابیس: MySQL
- وارد کردن اطلاعات مشابه بالا
- امکان ذخیره اتصال برای استفادههای بعدی
HeidiSQL
- ساخت Session جدید
- انتخاب نوع اتصال: “MySQL (TCP/IP)”
- وارد کردن IP، یوزر، پسورد و پورت
- اتصال و مشاهده دیتابیسها
۴.۳ بررسی خطاهای احتمالی هنگام اتصال
در هنگام تست اتصال ممکن است با خطاهایی مواجه شوید. برخی از رایجترین آنها:
- Access denied for user: رمز عبور اشتباه یا مجوز ناکافی
- Can’t connect to MySQL server: پورت بسته یا IP اشتباه
- Connection timeout: سرور پاسخ نمیدهد یا فایروال مانع اتصال شده
برای رفع این خطاها، مراحل قبلی را مرور کنید و مطمئن شوید:
- کاربر با IP مناسب ساخته شده
- پورت 3306 باز است
- bind-address به درستی تنظیم شده
- رمز عبور صحیح وارد شده
جمعبندی
اتصال از راه دور به دیتابیس MySQL یکی از نیازهای رایج در پروژههای توسعه، تست و مدیریت دادههاست. این نوع اتصال به شما امکان میدهد از هر نقطهای به دیتابیس مرکزی خود دسترسی داشته باشید، اما تنها در صورتی که تنظیمات بهدرستی انجام شده باشند و نکات امنیتی رعایت شوند.
در این آموزش، مرحلهبهمرحله یاد گرفتید که چگونه:
- تنظیمات MySQL را برای پذیرش اتصالهای راه دور تغییر دهید
- کاربر مناسب با مجوزهای لازم بسازید
- پورت 3306 را در فایروال باز کنید و مسیر ارتباطی را امن کنید
- با ابزارهای خط فرمان یا گرافیکی اتصال را تست کنید
اگر تمام مراحل را با دقت انجام دهید، میتوانید با خیال راحت از راه دور به دیتابیس MySQL خود متصل شوید و آن را مدیریت کنید.