🗄️ دسته‌بندی پایگاه‌های داده MySQL

پایگاه‌های داده MySQL

هر آنچه برای ساخت دیتابیس، اتصال با PHP، رفع خطاهای رایج، وارد کردن بکاپ و امنیت MySQL نیاز دارید.
همین حالا دیتابیس خود را مدیریت کنید!

✓ ساخت دیتابیس ✓ اتصال با PHP ✓ رفع خطاها ✓ امنیت SQL
۸
مقاله تخصصی
۳
گروه آموزشی
+۱۰۰
مقاله در کل وبلاگ
رایگان
دسترسی کامل

مقالات آموزشی پایگاه‌های داده MySQL

مقالات به سه گروه دسته‌بندی شده‌اند. روی هر عنوان کلیک کنید تا محتوای کامل باز شود.

💚 به سرویس‌های مکمل هم نیاز دارید؟

در کنار هاست رایگان، می‌توانید از پنل پیامک رایگان و ثبت دامنه ارزان پارسه دو هم استفاده کنید.

🗄️

ساخت و اتصال به دیتابیس

ساخت پایگاه داده، اتصال با PHP و اتصال خارجی

۱ آموزش ساخت و راه‌اندازی پایگاه داده MySQL جدید ▾

معرفی

بسیاری از اسکریپت‌ها و سیستم‌های مدیریت محتوا برای ذخیره اطلاعات خود به پایگاه داده MySQL نیاز دارند. مواردی مانند وردپرس، انجمن‌ها، فروشگاه‌های اینترنتی و بسیاری از برنامه‌های PHP بدون دیتابیس قادر به فعالیت کامل نیستند.

برای استفاده از این اسکریپت‌ها، ابتدا باید یک پایگاه داده جدید ایجاد کرده و اطلاعات اتصال آن را در تنظیمات سایت وارد کنید.

ایجاد یک پایگاه داده MySQL جدید

قبل از استفاده از دیتابیس، ابتدا باید آن را در کنترل پنل هاست ایجاد کنید. مراحل ایجاد پایگاه داده:

  1. وارد پنل مدیریت حساب هاست خود شوید
  2. حساب میزبانی موردنظر را انتخاب کرده و وارد مدیریت آن شوید
  3. از بخش مدیریت، وارد کنترل پنل هاست شوید
  4. به قسمت MySQL Databases بروید
  5. در بخش ایجاد پایگاه داده جدید، یک نام برای دیتابیس وارد کنید
  6. روی گزینه Create Database کلیک کنید تا پایگاه داده ساخته شود
نکته: نام پایگاه داده بهتر است کوتاه و قابل تشخیص باشد. در بیشتر کنترل پنل‌ها فقط استفاده از حروف انگلیسی و اعداد مجاز است. از فاصله و کاراکترهای خاص در نام دیتابیس استفاده نکنید.

دریافت اطلاعات اتصال پایگاه داده

پس از ساخت دیتابیس، برای اتصال اسکریپت خود به MySQL به چهار اطلاعات اصلی نیاز دارید:

  • نام پایگاه داده (Database Name)
  • نام کاربری پایگاه داده (Database Username)
  • رمز عبور پایگاه داده (Database Password)
  • نام میزبان MySQL (Database Host)

این اطلاعات معمولاً در فایل تنظیمات اسکریپت یا هنگام نصب برنامه از شما درخواست می‌شوند.

پیدا کردن نام دیتابیس، کاربر و میزبان MySQL

برای مشاهده این اطلاعات:

  1. وارد کنترل پنل هاست شوید
  2. به بخش MySQL Databases بروید
  3. در قسمت پایگاه‌های داده موجود، دیتابیس ساخته‌شده را پیدا کنید
  4. اطلاعات زیر را مشاهده و کپی کنید: نام کامل پایگاه داده، نام کاربری MySQL، نام میزبان MySQL

سپس این موارد را در فایل تنظیمات یا صفحه نصب اسکریپت وارد کنید.

پیدا کردن رمز عبور پایگاه داده

رمز عبور دیتابیس معمولاً همان رمز حساب میزبانی است که هنگام ایجاد هاست برای شما تعیین شده است. برای مشاهده رمز عبور:

  1. وارد ناحیه کاربری خود شوید
  2. حساب میزبانی مربوط به دیتابیس را انتخاب کنید
  3. بخش اطلاعات حساب یا تنظیمات امنیتی را باز کنید
  4. گزینه نمایش رمز عبور (Show Password) را انتخاب کنید
  5. رمز نمایش داده‌شده را در تنظیمات اتصال دیتابیس اسکریپت وارد کنید

اتصال اسکریپت به MySQL

پس از وارد کردن اطلاعات صحیح، اسکریپت شما می‌تواند با پایگاه داده ارتباط برقرار کند. معمولاً فایل تنظیمات شامل بخشی مشابه موارد زیر است:

Database Name: نام دیتابیس
Username: نام کاربر MySQL
Password: رمز عبور
Host: آدرس سرور MySQL

بعد از ذخیره تنظیمات، سایت یا نرم‌افزار شما قادر خواهد بود اطلاعات را در دیتابیس ذخیره و بازیابی کند.

نکات مهم هنگام ساخت دیتابیس

  • همیشه اطلاعات دیتابیس را دقیقاً از کنترل پنل کپی کنید
  • از وارد کردن دستی نام‌ها خودداری کنید تا اشتباه تایپی رخ ندهد
  • از مقدار localhost برای Host استفاده نکنید، مگر اینکه شرکت هاستینگ آن را اعلام کرده باشد
  • قبل از حذف یا تغییر دیتابیس، حتماً نسخه پشتیبان تهیه کنید
جمع‌بندی: ساخت یک پایگاه داده MySQL اولین مرحله برای راه‌اندازی بسیاری از سایت‌ها و اسکریپت‌های PHP است. پس از ایجاد دیتابیس، کافی است اطلاعات اتصال شامل نام دیتابیس، نام کاربری، رمز عبور و میزبان MySQL را در تنظیمات برنامه وارد کنید.
۲ نحوه اتصال به MySQL در هاست ▾

معرفی

پایگاه داده MySQL یکی از اصلی‌ترین بخش‌های بسیاری از وب‌سایت‌های پویا مانند وردپرس، فروشگاه‌های اینترنتی و اسکریپت‌های PHP است. برای ارتباط بین سایت و پایگاه داده، معمولاً از دو روش محبوب PDO و MySQLi استفاده می‌شود.

هر دو کتابخانه PDO و MySQLi در نسخه‌های مختلف PHP در دسترس هستند و بیشتر اسکریپت‌های مدرن PHP برای اتصال به MySQL از یکی از این دو روش استفاده می‌کنند.

اطلاعات مورد نیاز برای اتصال به MySQL

برای اتصال سایت به پایگاه داده، به چهار اطلاعات اصلی نیاز دارید:

  • نام پایگاه داده (Database Name)
  • نام کاربری دیتابیس (Database Username)
  • رمز عبور دیتابیس (Database Password)
  • نام میزبان MySQL (MySQL Hostname)

این اطلاعات معمولاً در بخش Current Databases داخل قسمت پایگاه‌های داده MySQL در کنترل پنل نمایش داده می‌شوند.

نکته مهم درباره MySQL Hostname

یکی از اشتباهات رایج هنگام نصب اسکریپت‌ها، استفاده از مقدار localhost برای نام میزبان است. بسیاری از اسکریپت‌ها به صورت پیش‌فرض این مقدار را قرار می‌دهند، اما در هاست اشتراکی همیشه صحیح نیست.

برای اتصال موفق، باید نام دقیق سرور MySQL را که در بخش دیتابیس‌های کنترل پنل نمایش داده شده است وارد کنید. استفاده از مقدار اشتباه در این قسمت باعث خطاهایی مانند عدم اتصال به دیتابیس، خطای اتصال MySQL یا خطای نصب اسکریپت خواهد شد.

نمونه اتصال با MySQLi در PHP

نمونه ساده اتصال با MySQLi:

<?php
$host = "mysql-host";
$user = "database-user";
$password = "database-password";
$database = "database-name";

$conn = mysqli_connect($host, $user, $password, $database);

if (!$conn) {
    die("Database connection failed: " . mysqli_connect_error());
}

echo "Connected successfully";
?>

نمونه اتصال با PDO

روش دیگر استفاده از PDO است:

<?php
$host = "mysql-host";
$dbname = "database-name";
$username = "database-user";
$password = "database-password";

try {
    $pdo = new PDO(
        "mysql:host=$host;dbname=$dbname;charset=utf8mb4",
        $username,
        $password
    );

    $pdo->setAttribute(
        PDO::ATTR_ERRMODE,
        PDO::ERRMODE_EXCEPTION
    );

    echo "Connected successfully";
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
?>

استفاده از utf8mb4 پیشنهاد می‌شود تا اطلاعات فارسی، زبان‌های مختلف و کاراکترهای خاص بدون مشکل ذخیره شوند.

آیا امکان اتصال مستقیم به MySQL از خارج از هاست وجود دارد؟

در سرویس‌های هاست اشتراکی رایگان، اتصال مستقیم خارجی به پایگاه داده معمولاً امکان‌پذیر نیست. یعنی:

  • نمی‌توانید مستقیماً با نرم‌افزارهای مدیریت دیتابیس روی کامپیوتر یا موبایل به MySQL متصل شوید
  • نمی‌توانید دیتابیس هاست را برای برنامه‌ای که روی سرور دیگری قرار دارد استفاده کنید
  • پایگاه داده فقط برای وب‌سایت‌هایی که روی همان سرویس میزبانی قرار دارند قابل استفاده است

نکات مهم برای اتصال بهتر به MySQL

  • اطلاعات اتصال دیتابیس را دقیق وارد کنید
  • از نام میزبان واقعی MySQL استفاده کنید
  • رمز عبور صحیح را بررسی کنید
  • برای سایت‌های فارسی از utf8mb4 استفاده کنید
  • اطلاعات دیتابیس را در فایل جداگانه و امن نگهداری کنید
  • اطلاعات ورود دیتابیس را در اختیار افراد دیگر قرار ندهید
جمع‌بندی: برای اتصال سایت PHP به MySQL در VCP ابتدا باید یک پایگاه داده ایجاد کرده و سپس اطلاعات اتصال شامل نام دیتابیس، نام کاربری، رمز عبور و میزبان MySQL را در اسکریپت خود وارد کنید. کتابخانه‌های PDO و MySQLi بهترین روش‌های استاندارد برای ارتباط PHP با MySQL هستند.
۳ اتصال به MySQL از طریق نرم‌افزارهای خارجی ▾

معرفی

گاهی اوقات ممکن است بخواهید از طریق یک برنامه خارج از محیط هاست، به پایگاه داده MySQL خود متصل شوید. برای مثال:

  • استفاده از نرم‌افزارهای مدیریت دیتابیس مانند MySQL Workbench
  • اتصال یک برنامه اختصاصی نوشته‌شده توسط خودتان
  • اتصال اپلیکیشن‌های موبایل اندروید یا iOS به پایگاه داده
  • استفاده از ابزارهای توسعه برای مدیریت مستقیم اطلاعات

اما در سرویس‌های هاست رایگان VCP، اتصال مستقیم و خارجی به پایگاه داده MySQL امکان‌پذیر نیست.

آیا می‌توان از خارج از هاست به MySQL متصل شد؟

خیر. در هاست رایگان، دسترسی مستقیم به دیتابیس MySQL فقط از داخل همان محیط میزبانی امکان‌پذیر است.

شما می‌توانید از روش‌های زیر با پایگاه داده خود کار کنید:

  • استفاده از فایل‌های PHP که روی همان هاست قرار دارند
  • مدیریت دیتابیس از طریق ابزار phpMyAdmin موجود در کنترل پنل

اما اتصال مستقیم از موارد زیر امکان‌پذیر نیست:

  • نرم‌افزارهای نصب‌شده روی کامپیوتر شخصی
  • برنامه‌های موبایل
  • سرورهای خارجی
  • سایت‌ها یا سرویس‌های دیگر

دلیل محدود بودن اتصال خارجی چیست؟

محدود کردن دسترسی مستقیم به MySQL یک اقدام امنیتی و مدیریتی است. این محدودیت باعث می‌شود:

  • امنیت اطلاعات کاربران افزایش پیدا کند
  • از حملات احتمالی به پایگاه داده جلوگیری شود
  • مصرف منابع سرور کنترل شود
  • عملکرد هاست برای همه کاربران پایدار باقی بماند

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

اگر قصد دارید یک برنامه یا سایت را به MySQL متصل کنید، بهترین روش این است که:

  • کد PHP مورد نیاز را روی هاست خود قرار دهید
  • اتصال دیتابیس را داخل همان فایل‌های سایت ایجاد کنید
  • برنامه‌های خارجی را از طریق API یا درخواست‌های HTTP به سایت متصل کنید

برای مثال، به جای اتصال مستقیم اپلیکیشن موبایل به MySQL، بهتر است یک API امن با PHP ایجاد کنید تا اطلاعات مورد نیاز را از طریق آن دریافت یا ارسال کند.

اتصال خارجی در هاست حرفه‌ای

در سرویس‌های حرفه‌ای یا پریمیوم، معمولاً امکان فعال‌سازی دسترسی Remote MySQL وجود دارد. در این حالت می‌توان مشخص کرد که چه آدرس‌هایی اجازه اتصال به دیتابیس را داشته باشند و نرم‌افزارهای خارجی بتوانند به شکل کنترل‌شده به MySQL متصل شوند.

جمع‌بندی: در هاست رایگان، پایگاه داده MySQL فقط از طریق اسکریپت‌های موجود روی همان هاست و ابزار phpMyAdmin قابل استفاده است و اتصال مستقیم از نرم‌افزارهای خارجی امکان‌پذیر نیست. اگر به دسترسی Remote MySQL، اتصال نرم‌افزارهای خارجی یا مدیریت حرفه‌ای‌تر دیتابیس نیاز دارید، استفاده از یک سرویس هاست حرفه‌ای گزینه مناسب‌تری خواهد بود.
🔧

رفع خطاهای MySQL

حروف ناخوانا، phpMyAdmin و خطاهای اتصال

۴ نمایش حروف ناخوانا و علامت سؤال در MySQL ▾

معرفی

گاهی هنگام کار با وب‌سایت‌های PHP و MySQL ممکن است حروف فارسی، زبان‌های غیرلاتین، کاراکترهای خاص یا ایموجی‌ها به شکل علامت سؤال (????) یا متن‌های نامفهوم نمایش داده شوند.

این مشکل معمولاً زمانی رخ می‌دهد که اطلاعات از طریق phpMyAdmin وارد شده باشد و در سایت به درستی نمایش داده نشود، یا اطلاعاتی که توسط PHP ذخیره شده‌اند در phpMyAdmin خراب دیده شوند.

چه مشکلاتی ممکن است مشاهده کنید؟

این مشکل معمولاً در زمان ارتباط بین PHP و MySQL دیده می‌شود:

  • اطلاعات ذخیره شده توسط PHP در phpMyAdmin به شکل حروف ناخوانا نمایش داده می‌شوند
  • اطلاعات وارد شده در phpMyAdmin در سایت به صورت علامت سؤال یا متن خراب دیده می‌شوند
  • حروف فارسی، عربی، چینی و ایموجی‌ها به درستی ذخیره نمی‌شوند

دلیل نمایش حروف خراب در MySQL چیست؟

دلیل اصلی این مشکل معمولاً به Charset اتصال دیتابیس مربوط می‌شود. Charset مشخص می‌کند اطلاعات متنی چگونه بین PHP و MySQL منتقل و ذخیره شوند. برای سایت‌های امروزی بهترین انتخاب استفاده از utf8mb4 است. این Charset از زبان فارسی، زبان‌های مختلف، کاراکترهای خاص و ایموجی‌ها پشتیبانی می‌کند.

تفاوت utf8mb4 و latin1 چیست؟

در بعضی سرورها تنظیم پیش‌فرض اتصال ممکن است latin1 باشد. اما برای سایت‌های فارسی این تنظیم مناسب نیست و ممکن است باعث خراب شدن متن‌ها هنگام ذخیره یا نمایش شود. به همین دلیل بهتر است Charset اتصال PHP همیشه به صورت دستی روی utf8mb4 تنظیم شود.

رفع مشکل حروف خراب در MySQL

برای جلوگیری از این مشکل باید هنگام اتصال PHP به دیتابیس Charset مناسب را مشخص کنید.

تنظیم Charset در MySQLi

نمونه اتصال:

$mysqli = new mysqli(
'localhost',
'username',
'password',
'database'
);

$mysqli->set_charset('utf8mb4');

روش رویه‌ای:

$mysqli = mysqli_connect(
'localhost',
'username',
'password',
'database'
);

mysqli_set_charset($mysqli, 'utf8mb4');

تنظیم Charset در PDO

در PDO بهتر است Charset هنگام اتصال مشخص شود:

$dsn = 'mysql:host=localhost;dbname=database;charset=utf8mb4';

$pdo = new PDO(
$dsn,
'username',
'password'
);

با این تنظیم، اطلاعات فارسی و کاراکترهای خاص بدون مشکل بین PHP و MySQL منتقل می‌شوند.

آیا تغییر Charset اطلاعات قبلی را درست می‌کند؟

خیر. اگر اطلاعات قبلاً با تنظیم اشتباه ذخیره شده باشند، تغییر Charset اتصال به صورت خودکار آن‌ها را اصلاح نمی‌کند. برای سایت‌های تازه راه‌اندازی شده بهتر است اطلاعات خراب حذف و دوباره وارد شوند. برای سایت‌های فعال نیز قبل از تغییرات مهم، حتماً از دیتابیس نسخه پشتیبان تهیه کنید.

تفاوت Charset و Collation

بسیاری تصور می‌کنند تغییر Collation مشکل نمایش حروف را حل می‌کند، اما این درست نیست. Charset مسئول ذخیره و انتقال صحیح کاراکترها است. Collation برای مقایسه، مرتب‌سازی و جستجوی اطلاعات استفاده می‌شود. بنابراین برای رفع مشکل نمایش فارسی، ابتدا باید Charset اتصال بررسی شود.

نکات مهم جلوگیری از مشکل Charset

  • همیشه برای اتصال PHP به MySQL از utf8mb4 استفاده کنید
  • برای دیتابیس و جدول‌های جدید Charset مناسب انتخاب کنید
  • قبل از انتقال سایت، تنظیمات Charset مبدا و مقصد را بررسی کنید
  • قبل از تغییرات دیتابیس نسخه پشتیبان تهیه کنید
  • برای سایت‌های فارسی از UTF-8 استفاده کنید
جمع‌بندی: مشکل نمایش علامت سؤال یا حروف خراب در MySQL معمولاً به دلیل هماهنگ نبودن تنظیمات Charset بین PHP، MySQL و ابزارهایی مانند phpMyAdmin ایجاد می‌شود. با تنظیم صحیح اتصال دیتابیس روی utf8mb4 می‌توان بیشتر مشکلات مربوط به نمایش فارسی، زبان‌های مختلف و کاراکترهای خاص را برطرف کرد.
۵ رفع مشکل عدم دسترسی به phpMyAdmin در هاست ▾

معرفی

گاهی کاربران هنگام ورود به phpMyAdmin از طریق کنترل پنل هاست با مشکل مواجه می‌شوند و نمی‌توانند به مدیریت پایگاه داده خود دسترسی پیدا کنند. یکی از خطاهای رایج در این شرایط، خطای زیر است:

ERR_TOO_MANY_REDIRECTS

یا پیام‌هایی مانند «صفحه به درستی هدایت نمی‌شود» یا «تعداد تغییر مسیرها بیش از حد مجاز است». این مشکل معمولاً پس از تغییر رمز عبور حساب هاست یا تغییر اطلاعات ورود رخ می‌دهد.

پاک کردن کش و کوکی‌های مرورگر

یکی از رایج‌ترین دلایل مشکل ورود به phpMyAdmin، باقی ماندن اطلاعات قدیمی در حافظه مرورگر است. زمانی که رمز عبور حساب هاست تغییر می‌کند، ممکن است مرورگر همچنان اطلاعات ورود قبلی را ذخیره کرده باشد. در این حالت phpMyAdmin تلاش می‌کند با اطلاعات قدیمی به دیتابیس متصل شود، اما چون رمز قبلی دیگر معتبر نیست، فرآیند ورود با مشکل مواجه می‌شود.

برای رفع این مشکل:

  1. وارد تنظیمات مرورگر خود شوید
  2. کش (Cache) و کوکی‌ها (Cookies) مربوط به کنترل پنل هاست و phpMyAdmin را حذف کنید
  3. مرورگر را کاملاً ببندید و دوباره باز کنید
  4. مجدداً وارد phpMyAdmin شوید

ورود به phpMyAdmin با حالت ناشناس مرورگر

اگر پس از پاک کردن کش و کوکی هنوز مشکل ادامه داشت، می‌توانید از حالت Private یا Incognito مرورگر استفاده کنید. حالت ناشناس باعث می‌شود مرورگر بدون استفاده از اطلاعات ذخیره‌شده قبلی، یک نشست جدید ایجاد کند.

برای مثال:

  • در Chrome کلیدهای Ctrl + Shift + N
  • در Firefox کلیدهای Ctrl + Shift + P

را فشار دهید و سپس دوباره وارد کنترل پنل و phpMyAdmin شوید. در بسیاری از موارد، این روش مشکل ورود را برطرف می‌کند.

تغییر دوباره رمز عبور حساب هاست

گاهی پس از تغییر رمز عبور، اطلاعات جدید به صورت کامل در سیستم پایگاه داده اعمال نمی‌شود. در این شرایط می‌توانید رمز عبور حساب هاست خود را دوباره تغییر دهید تا اطلاعات ورود مجدداً همگام‌سازی شود.

مراحل پیشنهادی:

  1. وارد پنل کاربری هاست شوید
  2. رمز عبور حساب خود را تغییر دهید
  3. یک رمز جدید متفاوت انتخاب کنید
  4. تغییرات را ذخیره کنید
  5. حدود ۱۵ دقیقه صبر کنید تا تنظیمات در سیستم اعمال شود
  6. سپس دوباره با رمز جدید وارد شوید

در صورت نیاز، بعداً می‌توانید رمز عبور را به مقدار قبلی تغییر دهید.

قبل از تست دوباره این موارد را بررسی کنید

  • مطمئن شوید رمز عبور جدید را به درستی وارد می‌کنید
  • کش و کوکی‌های قدیمی مرورگر را حذف کنید
  • از چند مرورگر مختلف برای تست استفاده کنید
  • اگر تغییر رمز انجام داده‌اید، کمی زمان برای اعمال تنظیمات در نظر بگیرید
جمع‌بندی: مشکل دسترسی به phpMyAdmin معمولاً به دلیل باقی ماندن اطلاعات قدیمی مرورگر، هماهنگ نبودن رمز عبور جدید یا تأخیر در اعمال تغییرات ایجاد می‌شود. در بیشتر مواقع با پاک کردن کش و کوکی‌ها، استفاده از حالت ناشناس مرورگر یا تغییر دوباره رمز عبور حساب هاست، مشکل برطرف خواهد شد.
۶ خطاهای رایج اتصال MySQL و روش رفع آن‌ها ▾

معرفی

بسیاری از وب‌سایت‌های امروزی برای ذخیره اطلاعاتی مانند کاربران، نوشته‌ها، تنظیمات، محصولات و سایر داده‌های پویا از پایگاه داده MySQL استفاده می‌کنند. با این حال، گاهی اوقات هنگام اتصال سایت به پایگاه داده مشکلاتی رخ می‌دهد که باعث نمایش خطا یا از کار افتادن بخشی از سایت می‌شود.

خطاهای رایج هنگام اتصال به MySQL

اتصال به پایگاه داده معمولاً توسط اطلاعاتی مانند نام کاربری، رمز عبور، نام پایگاه داده و نام میزبان (Host) انجام می‌شود. اگر یکی از این موارد اشتباه باشد یا تنظیمات سرور هماهنگ نباشد، اتصال با خطا مواجه خواهد شد.

خطای «اتصال به پایگاه داده امکان‌پذیر نیست»

یکی از رایج‌ترین پیام‌هایی که در سایت‌ها مشاهده می‌شود:

Unable to connect to database
Database connection error

این خطا به این معنی است که اسکریپت سایت نتوانسته با سرور MySQL ارتباط برقرار کند.

دلایل احتمالی این مشکل عبارتند از:

  • اشتباه بودن نام کاربری پایگاه داده
  • اشتباه بودن رمز عبور
  • وارد کردن نام اشتباه پایگاه داده
  • استفاده از نام میزبان نادرست
  • مشکل موقت در سرویس پایگاه داده

در بسیاری از سیستم‌های مدیریت محتوا مانند وردپرس، پیام خطا به صورت عمومی نمایش داده می‌شود تا اطلاعات حساس سایت افشا نشود. برای مشاهده جزئیات بیشتر می‌توانید حالت اشکال‌زدایی (Debug Mode) را فعال کنید. در وردپرس این کار از طریق گزینه WP_DEBUG در فایل wp-config.php انجام می‌شود.

اگر خودتان کدنویسی سایت را انجام داده‌اید، می‌توانید خطاهای اتصال MySQL را با توابع زیر بررسی کنید:

برای MySQLi: mysqli_connect_error(); و mysqli_error();

برای PDO: PDOException

خطای No such file or directory

این خطا معمولاً زمانی رخ می‌دهد که در تنظیمات اتصال MySQL از مقدار localhost استفاده شده باشد. بسیاری از کاربران تصور می‌کنند همیشه باید از localhost استفاده کنند، اما در اکثر سرویس‌های هاست اشتراکی، پایگاه داده روی سرور جداگانه قرار دارد. بنابراین باید از نام میزبان واقعی MySQL استفاده کنید. برای مثال sql123.example.com یا مقداری مشابه که توسط شرکت هاستینگ ارائه شده است.

این اطلاعات معمولاً در کنترل پنل هاست، بخش MySQL Databases قابل مشاهده است.

خطای Access denied for user

نمونه این خطا:

Access denied for user 'username'@'server'

این پیام نشان می‌دهد که اتصال به سرور انجام شده، اما اطلاعات ورود صحیح نیست یا کاربر اجازه دسترسی به پایگاه داده موردنظر را ندارد.

۱. اشتباه بودن نام پایگاه داده

گاهی کاربران فقط نام کوتاه پایگاه داده را وارد می‌کنند، در حالی که نام کامل شامل پیشوند حساب نیز هست. برای مثال نام وارد شده mydatabase اما نام واقعی accountname_mydatabase است. نام دقیق پایگاه داده را همیشه از بخش مدیریت MySQL در کنترل پنل بررسی کنید.

۲. اشتباه بودن رمز عبور

توجه داشته باشید که رمز عبور پایگاه داده معمولاً با رمز ورود پنل کاربری متفاوت است. برای اتصال سایت باید از رمز مربوط به حساب میزبانی یا دیتابیس استفاده کنید، نه رمز ورود به پنل مشتری.

نکات مهم برای جلوگیری از خطاهای اتصال MySQL

  • از رمز عبور صحیح استفاده کنید: هنگام تنظیم فایل اتصال سایت، موارد نام کاربری، رمز عبور، نام پایگاه داده و نام میزبان MySQL را بررسی کنید
  • از localhost استفاده نکنید مگر اینکه هاست شما اعلام کرده باشد: به جای آن باید Host مخصوص MySQL را وارد کنید
  • نام کاربری و نام دیتابیس را کامل وارد کنید: در بسیاری از سرویس‌های هاستینگ، نام دیتابیس و کاربر دارای پیشوند هستند
  • بررسی کنید اتصال از محل مجاز انجام می‌شود: در برخی سرویس‌های هاست اشتراکی، اتصال مستقیم به MySQL از خارج از سرور امکان‌پذیر نیست

اگر اطلاعات اتصال درست است اما هنوز مشکل دارید

اگر موارد زیر را بررسی کرده‌اید:

  • نام کاربری صحیح است
  • رمز عبور صحیح است
  • نام دیتابیس درست است
  • Host صحیح وارد شده است

اما همچنان اتصال برقرار نمی‌شود، موارد زیر را بررسی کنید:

  • آیا سرویس MySQL فعال است؟
  • آیا محدودیت منابع هاست باعث توقف دیتابیس نشده است؟
  • آیا کد اتصال PHP مشکل دارد؟
  • آیا نسخه PHP با اسکریپت شما سازگار است؟
جمع‌بندی: خطاهای اتصال MySQL معمولاً به دلیل اشتباه در اطلاعات اتصال، استفاده از Host نادرست یا تنظیمات اشتباه اسکریپت رخ می‌دهند. با بررسی دقیق مواردی مانند نام دیتابیس، نام کاربری، رمز عبور و میزبان MySQL می‌توانید بیشتر مشکلات اتصال را به‌سادگی برطرف کنید.
💾

بکاپ و امنیت

وارد کردن نسخه پشتیبان و جلوگیری از SQL Injection

۷ آموزش وارد کردن نسخه پشتیبان پایگاه داده MySQL ▾

معرفی

اگر قصد دارید وب‌سایت خود را از یک شرکت هاستینگ دیگر به VCP منتقل کنید، یا می‌خواهید اطلاعات یک پایگاه داده قدیمی را بازیابی کنید، می‌توانید از فایل پشتیبان (Database Dump) مربوط به MySQL استفاده کنید.

فایل‌های پشتیبان پایگاه داده معمولاً با فرمت‌هایی مانند .sql ذخیره می‌شوند و شامل ساختار جداول، اطلاعات کاربران، تنظیمات سایت و سایر داده‌های موجود در دیتابیس هستند. قبل از شروع فرآیند انتقال، ابتدا باید یک پایگاه داده جدید ایجاد کرده و تنظیمات سایت خود را برای استفاده از آن تغییر دهید.

مراحل وارد کردن فایل پشتیبان MySQL

برای انتقال اطلاعات پایگاه داده، مراحل زیر را انجام دهید:

۱. ایجاد پایگاه داده جدید

ابتدا وارد کنترل پنل هاست شوید و از بخش مدیریت پایگاه داده MySQL، یک دیتابیس جدید ایجاد کنید. پس از ایجاد دیتابیس، اطلاعات زیر را یادداشت کنید:

  • نام پایگاه داده
  • نام کاربری دیتابیس
  • رمز عبور
  • نام میزبان MySQL (Database Host)

این اطلاعات برای اتصال سایت شما به دیتابیس جدید مورد نیاز است.

۲. ورود به phpMyAdmin

پس از ایجاد دیتابیس:

  1. وارد کنترل پنل هاست شوید
  2. بخش phpMyAdmin را باز کنید
  3. پایگاه داده‌ای که ایجاد کرده‌اید را از لیست انتخاب کنید
  4. وارد صفحه مدیریت همان دیتابیس شوید

۳. وارد کردن فایل پشتیبان

برای انتقال اطلاعات:

  1. از منوی بالای phpMyAdmin روی گزینه Import (درون‌ریزی) کلیک کنید
  2. گزینه انتخاب فایل را بزنید
  3. فایل پشتیبان با پسوند .sql را انتخاب کنید
  4. روی دکمه Go (اجرا) کلیک کنید
  5. منتظر بمانید تا فرآیند انتقال کامل شود

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

وارد کردن فایل‌های پشتیبان حجیم

اگر حجم فایل SQL شما زیاد باشد، ممکن است phpMyAdmin نتواند آن را به صورت کامل وارد کند. این مشکل معمولاً به دلیل محدودیت‌های زیر رخ می‌دهد:

  • حداکثر حجم فایل قابل آپلود
  • محدودیت زمان اجرای PHP
  • محدودیت منابع سرور هنگام پردازش فایل بزرگ

در این شرایط ممکن است هنگام Import با خطاهایی مانند قطع شدن عملیات یا پایان زمان اجرا مواجه شوید.

راهکار برای دیتابیس‌های بزرگ

برای وارد کردن فایل‌های حجیم می‌توانید از ابزارهایی مانند BigDump استفاده کنید. BigDump یک اسکریپت سبک PHP است که فایل SQL بزرگ را به بخش‌های کوچک‌تر تقسیم کرده و آن‌ها را مرحله‌به‌مرحله وارد دیتابیس می‌کند.

مزیت استفاده از این روش:

  • کاهش فشار روی سرور
  • جلوگیری از خطای Timeout
  • امکان انتقال دیتابیس‌های بزرگ‌تر

نکات مهم قبل از انتقال دیتابیس

قبل از Import کردن فایل SQL بهتر است:

  • از دیتابیس فعلی خود یک نسخه پشتیبان تهیه کنید
  • مطمئن شوید نسخه MySQL و PHP با سایت شما سازگار هستند
  • اگر سایت وردپرسی دارید، بعد از انتقال اطلاعات، فایل wp-config.php را با اطلاعات دیتابیس جدید هماهنگ کنید
  • در صورت مشاهده خطاهای مربوط به کاراکترها، تنظیمات Charset دیتابیس را بررسی کنید
جمع‌بندی: وارد کردن نسخه پشتیبان MySQL یکی از مهم‌ترین مراحل هنگام انتقال سایت به هاست جدید است. با استفاده از phpMyAdmin می‌توانید بیشتر فایل‌های SQL را به‌سادگی منتقل کنید، اما برای دیتابیس‌های بزرگ بهتر است از ابزارهای تخصصی مانند BigDump استفاده کنید تا فرآیند انتقال بدون خطا انجام شود.
۸ چگونه از حملات SQL Injection جلوگیری کنیم؟ ▾

معرفی

یکی از اشتباهات رایج در بین برنامه‌نویسان تازه‌کار PHP، نوشتن کدی است که در برابر حملات SQL Injection آسیب‌پذیر است. حملات تزریق SQL می‌توانند امنیت کل وب‌سایت را به خطر بیندازند و باعث دسترسی غیرمجاز به اطلاعات پایگاه داده، تغییر داده‌ها یا حتی حذف کامل اطلاعات شوند.

خبر خوب این است که با رعایت چند نکته ساده در زمان برنامه‌نویسی می‌توان به‌راحتی از این نوع حملات جلوگیری کرد.

SQL Injection چیست؟

SQL Injection نوعی حمله امنیتی است که در آن مهاجم با وارد کردن کدهای مخرب SQL در ورودی‌های سایت، تلاش می‌کند دستورات غیرمجاز را در پایگاه داده اجرا کند.

برای مثال تصور کنید یک فرم ساده برای عضویت کاربران در خبرنامه سایت دارید. کاربر ایمیل خود را وارد می‌کند و این مقدار در دیتابیس ذخیره می‌شود. کد آسیب‌پذیر ممکن است به شکل زیر باشد:

<?php
$email = $_POST['email'];
$sql = "INSERT INTO subscribers (email) VALUES ('$email')";
$result = mysqli_query($connection, $sql);
?>

اگر کاربر یک ایمیل معمولی وارد کند (user@example.com)، کوئری ساخته‌شده به شکل زیر خواهد بود:

INSERT INTO subscribers (email) VALUES ('user@example.com');

همه چیز به درستی کار می‌کند. اما مشکل زمانی ایجاد می‌شود که فردی مقدار مخرب وارد کند. برای مثال: '; DROP TABLE subscribers; --

در این حالت، کد PHP ممکن است چنین دستوری ایجاد کند:

INSERT INTO subscribers (email) VALUES (''); DROP TABLE subscribers; --');

قسمت بعد از -- به عنوان توضیح در SQL در نظر گرفته می‌شود و اجرا نمی‌شود. نتیجه این است که مهاجم می‌تواند باعث اجرای دستورات ناخواسته روی دیتابیس شود.

در شرایط واقعی، حمله‌کننده ممکن است بتواند:

  • اطلاعات کاربران را مشاهده کند
  • اطلاعات دیتابیس را تغییر دهد
  • حساب مدیریتی جعلی ایجاد کند
  • اطلاعات حساس سایت را استخراج کند
  • داده‌های مهم را حذف کند

چگونه از SQL Injection جلوگیری کنیم؟

برای محافظت از کد PHP در برابر SQL Injection دو روش اصلی وجود دارد:

  • استفاده از Prepared Statements (دستورات آماده)
  • استفاده از Escape کردن ورودی‌ها

روش اول یعنی دستورات آماده، امن‌ترین و استانداردترین روش محسوب می‌شود.

استفاده از Prepared Statements

در دستورات آماده، ساختار کوئری و اطلاعات واردشده توسط کاربر از یکدیگر جدا می‌شوند. یعنی داده کاربر هیچ‌وقت مستقیماً وارد متن SQL نمی‌شود.

نمونه امن با MySQLi:

<?php
$email = $_POST['email'];
$sql = "INSERT INTO subscribers (email) VALUES (?)";
$statement = mysqli_prepare($connection, $sql);
mysqli_stmt_bind_param($statement, "s", $email);
$result = mysqli_stmt_execute($statement);
?>

در این روش:

  • ساختار SQL ثابت باقی می‌ماند
  • مقدار کاربر فقط به عنوان داده ارسال می‌شود
  • امکان اجرای دستور اضافی توسط مهاجم وجود ندارد

این روش برای پروژه‌های جدید PHP توصیه می‌شود.

استفاده از Escape کردن داده‌ها

روش دیگر، پاک‌سازی ورودی‌ها قبل از ارسال به دیتابیس است. در MySQLi می‌توان از تابع mysqli_real_escape_string() استفاده کرد:

<?php
$email = mysqli_real_escape_string($connection, $_POST['email']);
$sql = "INSERT INTO subscribers (email) VALUES ('$email')";
$result = mysqli_query($connection, $sql);
?>

این تابع کاراکترهای خطرناک را تغییر می‌دهد تا MySQL آن‌ها را به عنوان دستور SQL تفسیر نکند. البته در پروژه‌های جدید، استفاده از Prepared Statements گزینه بهتر و مطمئن‌تری است.

اشتباهات رایج در جلوگیری از SQL Injection

قرار دادن مستقیم اطلاعات کاربر داخل Prepared Statement

برخی برنامه‌نویسان تصور می‌کنند همین که از mysqli_prepare استفاده کنند، امنیت کامل ایجاد می‌شود. اما این کد همچنان مشکل دارد:

<?php
$email = $_POST['email'];
$sql = "INSERT INTO subscribers (email) VALUES ('$email')";
$statement = mysqli_prepare($connection, $sql);
mysqli_stmt_execute($statement);
?>

در اینجا مقدار کاربر همچنان داخل متن SQL قرار گرفته است. روش صحیح این است که مقدار را با پارامتر ارسال کنید (VALUES (?)) و سپس با mysqli_stmt_bind_param() آن را متصل کنید.

استفاده از تابع اشتباه برای پاک‌سازی داده‌ها

PHP توابع مختلفی برای پردازش متن دارد، اما همه آن‌ها برای امنیت SQL مناسب نیستند. برای مثال htmlspecialchars()، addslashes() و filter_var() جایگزین مناسبی برای محافظت از کوئری SQL نیستند.

هر تابع کاربرد خاصی دارد:

  • htmlspecialchars() برای نمایش امن اطلاعات در HTML است
  • توابع اعتبارسنجی برای بررسی فرمت داده‌ها استفاده می‌شوند
  • پاک‌سازی SQL باید با روش مخصوص دیتابیس انجام شود

برای MySQLi از mysqli_real_escape_string() استفاده کنید. برای PDO بهتر است همیشه از Prepared Statements استفاده شود.

نکات مهم برای افزایش امنیت دیتابیس

  • همیشه ورودی کاربران را بررسی کنید
  • برای کوئری‌ها از Prepared Statements استفاده کنید
  • اطلاعات حساس دیتابیس را در فایل‌های عمومی قرار ندهید
  • سطح دسترسی کاربران دیتابیس را محدود کنید
  • از نسخه پشتیبان منظم دیتابیس استفاده کنید
  • نرم‌افزارها و افزونه‌های سایت را به‌روز نگه دارید
جمع‌بندی: حملات SQL Injection یکی از خطرناک‌ترین مشکلات امنیتی در سایت‌های PHP و MySQL هستند، اما جلوگیری از آن‌ها بسیار ساده است. استفاده از Prepared Statements، اعتبارسنجی ورودی‌ها و رعایت اصول صحیح برنامه‌نویسی می‌تواند جلوی بیشتر حملات تزریق SQL را بگیرد.

پرسش‌های متداول

پاسخ به سوالات رایج درباره پایگاه‌های داده MySQL

چگونه پایگاه داده MySQL بسازم؟

از بخش MySQL Databases در کنترل پنل هاست، یک دیتابیس جدید ایجاد کنید و اطلاعات اتصال را یادداشت نمایید. برای جزئیات بیشتر هاست رایگان را ببینید.

چرا حروف فارسی به صورت علامت سؤال نمایش داده می‌شوند؟

این مشکل به دلیل Charset نامناسب است. باید اتصال PHP به MySQL روی utf8mb4 تنظیم شود.

چگونه خطای max_user_connections را رفع کنم؟

با حذف افزونه‌های سنگین، فعال‌سازی کش و کاهش تعداد سایت‌های روی یک حساب. برای اطلاعات بیشتر محدودیت‌های منصفانه را ببینید.

چگونه از SQL Injection جلوگیری کنم؟

با استفاده از Prepared Statements (دستورات آماده) و اعتبارسنجی ورودی‌ها.

چگونه بکاپ دیتابیس را وارد کنم؟

از بخش Import در phpMyAdmin، فایل SQL را آپلود کنید. برای فایل‌های حجیم از BigDump استفاده کنید. برای اطلاعات بیشتر آموزش FTP را ببینید.

چرا نمی‌توانم از خارج از هاست به MySQL متصل شوم؟

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

آماده شروع سفر وب‌مستری خود هستید؟

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