SHET31

دیتابیس وردپرس چیست؟ تمام آنچه باید بدانید.

دیتابیس وردپرس چیست؟ تمام آنچه باید بدانید.

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

خیلی از ما سال‌ها با وردپرس کار می‌کنیم و تا وقتی سایت درست کار می‌کنه، اصلاً کاری به دیتابیس نداریم. مشکل دقیقاً از جایی شروع می‌شه که سایت سنگین می‌شه، یا یه روز صبح بلند می‌شید و می‌بینید به‌جای سایتتون نوشته «Error establishing a database connection». اون موقع تازه می‌فهمید که ای دل غافل، اصلاً نمی‌دونم این وسط چه خبره.

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

آنچه در این مقاله می‌خوانید

دیتابیس وردپرس چیست؟

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

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

حالا این وسط وردپرس چی کار می‌کنه؟ وردپرس نقش همون آدمیه که دفترچه رو ورق می‌زنه. وقتی یه بازدیدکننده روی لینک یه پست کلیک می‌کنه، وردپرس می‌ره به دیتابیس می‌گه «آقا اون پستی که آی‌دیش ۲۴۵ هست رو بده». دیتابیس متن پست، عنوان، تاریخ انتشار و اسم نویسنده رو تحویل می‌ده و وردپرس همه اینا رو داخل قالب می‌چینه و به کاربر نشون می‌ده. این اتفاق تو کسری از ثانیه می‌افته و کاربر اصلاً متوجه نمی‌شه پشت صحنه چه خبره.

چه اطلاعاتی داخل دیتابیس ذخیره می‌شود؟

خیلی‌ها فکر می‌کنن فقط پست‌ها و نظرها تو دیتابیسه. ولی لیست خیلی طولانی‌تر از ایناست:

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

یه نکته مهم که خیلی وقت‌ها باعث سوءتفاهم می‌شه: فایل‌های رسانه‌ای تو دیتابیس ذخیره نمی‌شن. یعنی خود عکسی که آپلود کردید، به‌صورت فایل تو پوشه wp-content/uploads روی هاست می‌شینه. چیزی که تو دیتابیس ذخیره می‌شه فقط آدرس اون فایل و اطلاعاتی مثل متن جایگزین و توضیحاتشه. همین نکته باعث می‌شه اگه فقط از دیتابیس بکاپ بگیرید و از فایل‌ها نگیرید، بعد از بازگردانی سایتتون پر بشه از عکس‌های شکسته.

چرا وردپرس از MySQL استفاده می‌کنه؟

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

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

PHP و دیتابیس چطور با هم مرتبط هستند؟

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

زبون این گفتگو، SQL هست. PHP یه دستور SQL می‌سازه، می‌فرسته سمت MySQL، جواب رو تحویل می‌گیره و باهاش کار می‌کنه.

این گفتگو معمولاً یکی از این چهار حالته که بهش می‌گن CRUD:

  • Create: یه چیز جدید بساز (مثلاً کاربر یه نظر جدید ثبت می‌کنه)
  • Read: یه چیزی رو بخون (مثلاً نمایش لیست آخرین پست‌ها)
  • Update: یه چیزی رو ویرایش کن (مثلاً تغییر عنوان یه پست)
  • Delete: یه چیزی رو حذف کن (مثلاً پاک کردن یه نظر اسپم)

تقریباً هر کاری که تو پیشخوان وردپرس انجام می‌دید، ته‌تهش یکی از این چهارتاست.

سرور میزبان دیتابیس (Database Host) چیست؟

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

بذارید با مثال خونه توضیح بدیم چون واقعاً گویاست:

  • نام میزبان (Database Host): آدرس خونه. توی اکثر هاست‌های اشتراکی مقدارش localhost هست، یعنی دیتابیس روی همون سروریه که فایل‌های سایت هستن. بعضی هاست‌ها یه آدرس یا آی‌پی جدا می‌دن.
  • نام دیتابیس (Database Name): اسم خونه. چون روی یه سرور ممکنه صدها دیتابیس باشه، هر کدوم اسم منحصربه‌فرد دارن.
  • نام کاربری (Username): اسم کسی که کلید داره.
  • رمز عبور (Password): خود کلید.

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

فایل wp-config.php

این چهار تا اطلاعات یه جایی باید نوشته بشن که وردپرس بخوندشون. اون جا فایل wp-config.php هست که تو پوشه اصلی سایتتون قرار داره. اگه بازش کنید، همون بالای فایل یه همچین چیزی می‌بینید:

php

define( 'DB_NAME', 'my_wp_database' );
define( 'DB_USER', 'my_wp_user' );
define( 'DB_PASSWORD', 'a_very_strong_password' );
define( 'DB_HOST', 'localhost' );

مسیر wp-config در فایل‌های وردپرس
مسیر wp-config در فایل‌های وردپرس

این فایل حساس‌ترین فایل کل سایتتونه. هر کسی که به محتواش دسترسی پیدا کنه، عملاً کلید دیتابیستون رو داره. پس دو تا کار بکنید: اولاً دسترسی فایلش رو روی 400 یا 440 بذارید، ثانیاً هیچ‌وقت این فایل رو تو گیت‌هاب عمومی یا جایی مثل اون آپلود نکنید.

دسترسی به دیتابیس از کنترل پنل هاست

تقریباً همه هاست‌ها یه بخش برای مدیریت دیتابیس دارن. تو سی‌پنل دنبال بخش Databases بگردید، تو دایرکت‌ادمین هم بخش MySQL Management. از اونجا می‌تونید دیتابیس جدید بسازید، کاربر جدید تعریف کنید، یا وارد phpMyAdmin بشید که یه‌کم پایین‌تر مفصل درباره‌ش حرف می‌زنیم.

جداول دیتابیس وردپرس

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

مثلاً جدول پست‌ها ستون‌هایی داره مثل عنوان، متن، تاریخ انتشار و آی‌دی نویسنده. هر ردیف این جدول هم یه پست از سایتتونه.

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

جدول‌های پیش‌فرض وردپرس

وردپرس به‌صورت پیش‌فرض دوازده تا جدول می‌سازه. اینا رو داشته باشید:

نام جدولچه چیزی توش ذخیره می‌شه
wp_postsتمام پست‌ها، برگه‌ها، فایل‌های رسانه و نسخه‌های بازنگری
wp_postmetaاطلاعات اضافی هر پست مثل فیلدهای سفارشی
wp_commentsتمام نظرات سایت
wp_commentmetaاطلاعات اضافی مربوط به نظرات
wp_usersلیست کاربرها با نام کاربری، ایمیل و رمز رمزنگاری‌شده
wp_usermetaاطلاعات اضافی کاربرها مثل نام، نام خانوادگی و سطح دسترسی
wp_optionsتمام تنظیمات سایت و افزونه‌ها
wp_termsدسته‌بندی‌ها و برچسب‌ها
wp_termmetaاطلاعات اضافی دسته‌ها و برچسب‌ها
wp_term_taxonomyمشخص می‌کنه هر ترم از چه نوعیه
wp_term_relationshipsارتباط بین پست‌ها و دسته‌بندی‌هاشون
wp_linksمربوط به بخش پیوندهای قدیمی وردپرس که دیگه استفاده نمی‌شه

از بین اینا دو تاشون معمولاً بیشتر از همه دردسر درست می‌کنن: wp_options و wp_postmeta. دلیلش رو تو بخش بهینه‌سازی می‌گیم.

پیشوند جدول‌ها

دیدید همه جدول‌ها با wp_ شروع می‌شن؟ به این می‌گن پیشوند جدول یا Table Prefix.

Table Prefix
Table Prefix

این پیشوند دو تا کاربرد داره. اول اینکه می‌تونید چند تا سایت وردپرسی رو تو یه دیتابیس نصب کنید و جدول‌هاشون قاطی نشه. دوم که مهم‌تره، بحث امنیته. خیلی از حملات تزریق SQL روی این حساب باز می‌کنن که اسم جدول‌ها همون wp_posts و wp_users پیش‌فرضه. اگه موقع نصب پیشوند رو به یه چیز غیرقابل‌حدس مثل mws7x_ تغییر بدید، جلوی یه دسته از حملات خودکار رو گرفتید.

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

جدول‌هایی که افزونه‌ها اضافه می‌کنند

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

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

کوئری SQL چیست و چطور کار می‌کند؟

SQL مخفف Structured Query Language هست، یعنی زبان پرس‌وجوی ساختاریافته. کوئری هم یعنی همون درخواستی که به دیتابیس می‌فرستید.

sql درphpmyadmin
sql درphpmyadmin

قشنگی SQL اینه که خیلی نزدیک به زبون انگلیسی معمولیه. مثلاً این دستور:

sql

SELECT post_title FROM wp_posts WHERE post_status = 'publish';

تقریباً همون چیزی رو می‌گه که به فارسی می‌گیم: «عنوان پست‌ها رو از جدول پست‌ها انتخاب کن، به شرطی که وضعیتشون منتشرشده باشه.»

چهار دستور اصلی

  • SELECT برای خوندن اطلاعات
  • INSERT برای اضافه کردن رکورد جدید
  • UPDATE برای ویرایش رکوردهای موجود
  • DELETE برای حذف رکوردها

چند تا کوئری کاربردی

قبل از هر چیز یه هشدار جدی بدیم و بعد بریم سراغ کوئری‌ها.

هیچ‌وقت، تحت هیچ شرایطی، بدون گرفتن بکاپ کوئری اجرا نکنید. SQL دکمه Undo نداره. اگه یه شرط WHERE رو اشتباه بنویسید یا کلاً یادتون بره بنویسیدش، تو کسری از ثانیه کل محتوای سایتتون پاک می‌شه و راه برگشتی ندارید.

۱. حذف تمام نظرات اسپم

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

sql

DELETE FROM wp_comments WHERE comment_approved = 'spam';

۲. حذف پست‌های قدیمی‌تر از یه بازه مشخص

مثلاً برای سایت‌های خبری یا آگهی که محتواشون بعد از مدتی بی‌ارزش می‌شه:

sql

DELETE FROM wp_posts
WHERE post_type = 'post'
AND DATEDIFF(NOW(), post_date) > 365;

این کوئری پست‌های قدیمی‌تر از یک سال رو حذف می‌کنه. عدد ۳۶۵ رو به دلخواه خودتون تغییر بدید.

۳. حذف تمام نسخه‌های بازنگری

وردپرس هر بار که پستی رو ذخیره می‌کنید یه نسخه بازنگری می‌سازه. اگه یه پست رو بیست بار ویرایش کرده باشید، بیست تا رکورد اضافه تو دیتابیس دارید. این کوئری همه‌شون رو تمیز می‌کنه:

sql

DELETE FROM wp_posts WHERE post_type = 'revision';

۴. تغییر رمز عبور مدیر وقتی از پیشخوان قفل شدید

این یکی واقعاً نجات‌بخشه. اگه رمزتون رو فراموش کردید و ایمیل بازیابی هم کار نمی‌کنه:

sql

UPDATE wp_users
SET user_pass = MD5('RamzeJadideMan123')
WHERE user_login = 'admin';

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

۵. جست‌وجو و جایگزینی گروهی

مثلاً وقتی دامنه‌تون رو عوض کردید و می‌خواید همه لینک‌های داخل پست‌ها آپدیت بشن:

sql

UPDATE wp_posts
SET post_content = REPLACE(post_content, 'http://old-site.com', 'https://new-site.com');

۶. پیدا کردن پست‌های بدون تصویر شاخص

قبل از حذف، اول ببینید چی دارید. عادت خوبیه که هر DELETE رو اول به شکل SELECT اجرا کنید تا مطمئن بشید دارید چی رو پاک می‌کنید:

sql

SELECT ID, post_title FROM wp_posts
WHERE post_type = 'post'
AND ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = '_thumbnail_id');

راستی اگه پیشوند جدول‌های سایتتون رو عوض کردید، یادتون باشه تو همه این کوئری‌ها به‌جای wp_ پیشوند خودتون رو بذارید.

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

سه تا راه اصلی دارید که هر کدوم برای یه موقعیت مناسبه. البته یه مقاله در مورد کار با دیتابیس هم نوشتیم!

phpMyAdmin

این محبوب‌ترین و در دسترس‌ترین روشه. phpMyAdmin یه ابزار تحت وبه که تقریباً روی همه هاست‌ها از قبل نصبه و بهتون اجازه می‌ده دیتابیستون رو با یه رابط گرافیکی مدیریت کنید.

برای ورود، وارد کنترل پنل هاستتون بشید و دنبال آیکون phpMyAdmin بگردید. بعد از ورود، سمت چپ لیست دیتابیس‌هاتون رو می‌بینید. روی دیتابیس سایتتون که کلیک کنید، لیست جدول‌ها باز می‌شه.

با phpMyAdmin می‌تونید محتوای جدول‌ها رو ببینید، رکوردها رو دستی ویرایش کنید، از تب SQL کوئری اجرا کنید، از تب Export بکاپ بگیرید و از تب Import بکاپ رو برگردونید.

داشبورد phpmyadmin
داشبورد phpmyadmin

افزونه‌های مدیریت دیتابیس

اگه با کد و کوئری راحت نیستید، افزونه‌ها کارتون رو خیلی راه می‌ندازن. افزونه‌هایی مثل WP-Optimize و Advanced Database Cleaner برای پاک‌سازی و بهینه‌سازی عالی‌ان، و Better Search Replace برای جست‌وجو و جایگزینی گروهی بدون نیاز به نوشتن کوئری.

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

WP-CLI برای وقتی که حرفه‌ای‌تر شدید

اگه به ترمینال و SSH دسترسی دارید، WP-CLI بهترین دوستتونه. مثلاً با یه دستور کوتاه می‌تونید از کل دیتابیس بکاپ بگیرید:

bash

wp db export backup.sql

یا با این دستور دامنه رو تو کل دیتابیس عوض کنید، اونم به شکل امن و بدون خراب کردن داده‌های سریالایزشده:

bash

wp search-replace 'http://old-site.com' 'https://new-site.com'

اون گزینه دوم واقعاً مهمه. خیلی از تنظیمات وردپرس به شکل سریالایزشده تو دیتابیس ذخیره می‌شن و اگه با یه UPDATE ساده عوضشون کنید، ساختارشون خراب می‌شه و افزونه‌هاتون از کار می‌افتن. WP-CLI و افزونه Better Search Replace این مورد رو خودشون هندل می‌کنن.

بهینه‌سازی و پاک‌سازی دیتابیس

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

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

  • نسخه‌های بازنگری: یه سایت با ۵۰۰ پست که هر کدوم ۱۵ بار ویرایش شدن، ۷۵۰۰ رکورد اضافه داره.
  • پست‌های زباله‌دان: تا وقتی زباله‌دان رو خالی نکنید، اونا هنوز تو دیتابیس هستن.
  • نظرات اسپم و در انتظار تأیید
  • ترنزینت‌های منقضی‌شده: ترنزینت‌ها داده‌های موقتی هستن که افزونه‌ها تو wp_options ذخیره می‌کنن. قراره خودشون منقضی و پاک بشن ولی خیلی وقت‌ها نمی‌شن و جدول options رو باد می‌کنن.
  • متادیتای یتیم: وقتی یه پست حذف می‌شه، گاهی متادیتاش تو wp_postmeta باقی می‌مونه بدون اینکه به هیچ پستی وصل باشه.

این موارد رو می‌تونید با افزونه افزایش سرعت وردپرس رخش که تازه نوشتیم توسط تیم خودمان می‌تونید مدیریت کنید!

افزونه فارسی افزایش سرعت رخش
افزونه فارسی افزایش سرعت رخش

تعمیر جدول‌های آسیب‌دیده

گاهی وقتا یه جدول به‌خاطر قطعی برق سرور یا پر شدن فضای هاست خراب می‌شه. وردپرس یه قابلیت داخلی برای تعمیر داره. کافیه این خط رو به wp-config.php اضافه کنید:

php

define( 'WP_ALLOW_REPAIR', true );

بعد برید به آدرس yoursite.com/wp-admin/maint/repair.php و گزینه تعمیر رو بزنید. بعد از تموم شدن کار، حتماً اون خط رو از wp-config.php حذف کنید، چون تا وقتی اونجا باشه هر کسی بدون نیاز به لاگین می‌تونه به این صفحه دسترسی داشته باشه.

تأثیر دیتابیس سنگین روی سرعت و سئو

هر بار که یه صفحه از سایتتون لود می‌شه، ده‌ها کوئری به دیتابیس زده می‌شه. هرچی جدول‌ها سنگین‌تر و شلوغ‌تر باشن، هر کدوم از این کوئری‌ها چند میلی‌ثانیه بیشتر طول می‌کشن. جمع این تأخیرها می‌شه چند صد میلی‌ثانیه تأخیر تو زمان پاسخ سرور، که مستقیماً روی معیار TTFB و در نتیجه روی رتبه‌تون تو گوگل اثر می‌ذاره.

ttfb
ttfb

خلاصه‌ش اینه: دیتابیس تمیز یعنی سایت سریع‌تر، و سایت سریع‌تر یعنی سئوی بهتر و کاربر راضی‌تر.

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

پشتیبان‌گیری از دیتابیس وردپرس

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

روش دستی با phpMyAdmin

وارد phpMyAdmin بشید، دیتابیس سایتتون رو از منوی سمت چپ انتخاب کنید، برید به تب Export. حالت Quick رو انتخاب کنید و فرمت رو روی SQL بذارید و دکمه Go رو بزنید. یه فایل با پسوند sql. دانلود می‌شه که کل دیتابیستون رو توش داره.

اگه دیتابیستون بزرگه، بهتره از حالت Custom استفاده کنید و گزینه فشرده‌سازی رو روی gzip بذارید تا حجم فایل کمتر بشه.

روش خودکار با افزونه

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

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

بازگردانی بکاپ

برای برگردوندن، دوباره وارد phpMyAdmin بشید. اول جدول‌های فعلی رو حذف کنید (یا یه دیتابیس خالی جدید بسازید)، بعد برید به تب Import، فایل sql. رو انتخاب کنید و Go رو بزنید.

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

امنیت دیتابیس وردپرس

چند تا کار ساده که خیلی فرق ایجاد می‌کنه:

  • پیشوند جدول‌ها رو موقع نصب عوض کنید. پنج ثانیه وقت می‌گیره و جلوی کلی حمله خودکار رو می‌گیره.
  • برای هر سایت یه کاربر دیتابیس جدا بسازید. اگه چند تا سایت دارید، از یه یوزر مشترک استفاده نکنید. اینطوری اگه یکی از سایت‌ها هک شد، بقیه در امان می‌مونن.
  • دسترسی‌های کاربر دیتابیس رو محدود کنید. کاربر دیتابیس وردپرس نیازی به دسترسی‌های سطح سرور مثل GRANT نداره.
  • رمز عبور قوی بذارید. رمز دیتابیس چیزیه که شما فقط یه بار تایپش می‌کنید، پس بذارید یه رشته تصادفی سی کاراکتری باشه.
  • از wp-config.php محافظت کنید. دسترسی فایلش رو محدود کنید و اگه می‌تونید یه پوشه بالاتر از دایرکتوری عمومی سایت منتقلش کنید.
  • PHP و MySQL رو به‌روز نگه دارید. نسخه‌های قدیمی حفره‌های امنیتی شناخته‌شده دارن.

خطای Error establishing a database connection و راه حل

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

۱. اطلاعات ورود اشتباهه. رایج‌ترین دلیل. wp-config.php رو باز کنید و مقادیر DB_NAME، DB_USER، DB_PASSWORD و DB_HOST رو با اطلاعات واقعی هاستتون مقایسه کنید. اگه اخیراً سایت رو منتقل کردید، احتمالاً همینه.

۲. سرور MySQL بالا نیست. اگه به سایت‌های دیگه روی همون سرور هم دسترسی ندارید، احتمالاً مشکل از سروره. یه تیکت به پشتیبانی هاست بزنید.

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

۴. جدول‌ها آسیب دیدن. اگه پیشخوان یه پیغام متفاوت مثل «One or more database tables are unavailable» می‌ده، از همون روش WP_ALLOW_REPAIR که بالاتر گفتیم استفاده کنید.

۵. سایتتون هک شده. اگه همه چی درست به نظر می‌رسه ولی باز خطا می‌ده، wp-config.php رو چک کنید ببینید کد مشکوکی بهش اضافه نشده باشه.

سوالات متداول

دیتابیس وردپرس کجاست؟

وی سرور هاستتون، جدا از فایل‌های سایت. برای دیدنش باید از کنترل پنل هاست وارد phpMyAdmin بشید. اطلاعات اتصال بهش هم تو فایل wp-config.php نوشته شده.

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

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

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

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

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

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

چطور بفهمم دیتابیسم چقدر حجم داره؟

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

تفاوت MySQL و MariaDB چیه؟ کدوم برای وردپرس بهتره؟

MariaDB یه انشعاب از MySQL هست که کاملاً باهاش سازگاره. وردپرس با هر دوتاش بدون مشکل کار می‌کنه و اگه هاستتون MariaDB داره، اصلاً لازم نیست نگران باشید.

جمع‌بندی

اگه بخوایم کل این مقاله رو تو چند خط خلاصه کنیم، اینه:

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

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

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

مدیریت دیتابیس اون‌قدرها که به نظر می‌رسه ترسناک نیست. فقط کافیه بدونید دارید چی کار می‌کنید و قبل از هر تغییری بکاپ بگیرید. همین دو تا اصل شما رو از نود درصد دردسرها نجات می‌ده.

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

نظر شما در این مورد چیه؟

  1. U362158۹ آذر ۱۴۰۳

    سلام
    میشه لطفا یه آموزش یا سمپلی بذارین که چطور میشه اطلاعات یه فرم رو مثلا نام و کدملی روی table خاصی که خودمون ایجاد کردیم توی دیتابیسمون ذخیره کنیم و بعد بخونیم و تغییرش بدیم؟؟
    ممنون

  2. U361631۵ آذر ۱۴۰۳

    درود بر شما
    لطفا بفرمایید برای سایت ووکامرس با روزانه هزار بازدید و ثبت 30 سفارش ، انجین جداول دیتابیس
    MyISAM
    یا
    Innodb
    باشه؟
    با تقدیم احترام

  3. U339602۸ اسفند ۱۴۰۲

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

  4. U310436۲۸ آبان ۱۴۰۲

    سلام
    وقت بخیر
    ببخشید هاستی که من تهیه کردم حداکثر حجم مجاز برای دیتابیس 600 مگ هست و الان حجم دیتابیس سایت ما از این مقدار بیشتر شده و گفتن باید کمش کنم. چطوری میشه این کارو انجام داد؟ حذف پست‌های قدیمی کمک می‌کنه؟ اگر بله این کار روی سئوی سایت تاثیر بدی نداره؟ سایت ما فروشگاهییه.
    ممنون.

    • رضا راد۲۸ آبان ۱۴۰۲

      سلام خیر راهی نداره . یعنی راه داره ولی بالاخره هر کاری کنید باز حجمش زیاد میشه در آینده و بهتره این محدودیت رو ارتقا بدین یا هاستتون رو تغییر بدین.

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسآنلاین و پاسخگوی شما هستیم.آنلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.