دیتابیس هاست به‌صورت پیش‌فرض فقط از داخل همان سرور قابل دسترسی است. برای وصل شدن از بیرون (برنامه‌ی مدیریت دیتابیس روی کامپیوتر، یا اپلیکیشنی روی سرور دیگر) باید آی‌پی مبدأ را در بخش Remote Database Access سی‌پنل اضافه کنید. بعد با نام سرور هاست، پورت ۳۳۰۶ و همان کاربر دیتابیس وصل می‌شوید. فقط آی‌پی‌های مشخص را اضافه کنید، نه «همه».

کی لازم می‌شود؟

کار Remote MySQL لازم است؟
سایت روی همین هاست به دیتابیس خودش وصل می‌شود نه؛ از localhost استفاده می‌کند
کار با HeidiSQL، DBeaver یا MySQL Workbench از کامپیوتر بله
اپلیکیشن روی سرور یا هاست دیگر که این دیتابیس را می‌خواند بله
ابزار گزارش‌گیری یا هوش تجاری بله
ویرایش ساده‌ی یک رکورد نه؛ phpMyAdmin کافی است (phpMyAdmin)

قدم ۱: آی‌پی مبدأ را پیدا کنید

برای کامپیوتر خودتان، در گوگل بنویسید what is my ip. برای سرور دیگر، آی‌پی عمومی همان سرور. اگر اینترنت شما آی‌پی ثابت ندارد، این عدد هر چند وقت عوض می‌شود و باید دوباره اضافه‌اش کنید.

قدم ۲: افزودن آی‌پی

  1. در سی‌پنل، بخش Databases، روی Remote Database Access بزنید.
  2. در کادر Host آی‌پی را بنویسید.
  3. در Comment بنویسید این آی‌پی مال چیست (مثلاً «لپ‌تاپ دفتر»)؛ شش ماه بعد یادتان نمی‌ماند.
  4. Add Host را بزنید.
صفحه Remote Database Access سی‌پنل برای افزودن آی‌پی مجاز
صفحه‌ی Remote Database Access؛ بالا افزودن آی‌پی و پایین فهرست آی‌پی‌های مجاز

قدم ۳: کاربر دیتابیس

اتصال با کاربر دیتابیس انجام می‌شود، نه نام کاربری سی‌پنل. کاربر باید به همان دیتابیس وصل شده باشد و دسترسی لازم را داشته باشد. اگر فقط می‌خواهید داده بخوانید، یک کاربر جدا بسازید که فقط SELECT دارد. (ساخت دیتابیس و کاربر)

قدم ۴: مشخصات اتصال

فیلد مقدار
Host نام دامنه یا نام سرور هاست (در ناحیه کاربری، زبانه‌ی اطلاعات میزبانی)
Port 3306
Username نام کامل کاربر دیتابیس، با پیشوند حساب (مثل account_user)
Password رمز همان کاربر دیتابیس
Database نام کامل دیتابیس، با پیشوند

اگر دامنه پشت کلودفلر است، نام دامنه به آی‌پی کلودفلر می‌رسد و اتصال دیتابیس از آن رد نمی‌شود. در این حالت نام سرور یا آی‌پی خود هاست را بدهید.

خطاهای رایج

خطا علت راه
Host ‘…’ is not allowed to connect آی‌پی شما در فهرست نیست، یا عوض شده آی‌پی فعلی را اضافه کنید
Access denied for user نام کاربری بدون پیشوند، رمز اشتباه، یا کاربر به دیتابیس وصل نیست نام کامل و دسترسی کاربر را بررسی کنید
Can’t connect to MySQL server (10060 / timed out) پورت ۳۳۰۶ در شبکه‌ی شما یا مسیر بسته است با اینترنت دیگر امتحان کنید؛ اگر نشد تیکت بزنید
Unknown MySQL server host نام سرور اشتباه نام را از ناحیه کاربری کپی کنید
وصل می‌شود ولی خیلی کند است فاصله‌ی شبکه؛ هر کوئری یک رفت و برگشت است طبیعی است؛ برای کار سنگین مناسب نیست

امنیت

  • علامت % نگذارید. این کادر % را به‌عنوان «هر آی‌پی» قبول می‌کند. با این کار دیتابیس از کل اینترنت قابل تلاش برای ورود می‌شود و فقط رمز بین مهاجم و داده‌های شماست.
  • اگر آی‌پی متغیر دارید، محدوده را تا جای ممکن تنگ بگیرید (مثلاً 203.0.113.%) یا هر بار آی‌پی را به‌روز کنید.
  • بعد از تمام شدن کار، آی‌پی را از فهرست حذف کنید.
  • برای اتصال بیرونی، کاربر جدا با کمترین دسترسی لازم بسازید و رمز بلند و تصادفی بگذارید.
  • اتصال را در برنامه‌ی مدیریت دیتابیس با SSL برقرار کنید اگر گزینه‌اش هست.

برای اپلیکیشنی که روی سرور دیگر است

اتصال از راه دور برای هر درخواست، تأخیر شبکه را به هر کوئری اضافه می‌کند. سایتی که در هر صفحه ده‌ها کوئری می‌زند، با دیتابیس دور خیلی کند می‌شود. اگر ممکن است سایت و دیتابیس را کنار هم نگه دارید و اتصال دور را برای گزارش‌گیری و کارهای دوره‌ای بگذارید.

سوال‌های رایج

هاست من می‌تواند به دیتابیسی روی سرور دیگر وصل شود؟

بله؛ در آن حالت باید آی‌پی هاست شما در سرور مقصد مجاز شود. این صفحه فقط برای اتصال‌های ورودی به دیتابیس خود شماست.

آی‌پی را اضافه کردم ولی هنوز وصل نمی‌شود.

مطمئن شوید آی‌پی واقعی اینترنت فعلی‌تان را داده‌اید (فیلترشکن آن را عوض می‌کند) و نام کاربری پیشوند دارد.

می‌شود با نام دامنه به‌جای آی‌پی اجازه داد؟

کادر نام هم می‌پذیرد، ولی آی‌پی مطمئن‌تر است، چون تطبیق نام به تنظیم DNS معکوس مبدأ وابسته است.