wordpress

رفع خطای Error Establishing a Database Connection در وردپرس

💡 دلیل خطای اتصال به دیتابیس وردپرس چیست و چطور آن را رفع کنیم؟

خطای“Error Establishing a Database Connection” به معنی است که وردپرس نمی‌تواند به پایگاه داده (Database) خود متصل شود.

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

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

رفع خطای اتصال به دیتابیس وردپرس


۱. معنی خطا

این خطا یعنی وردپرس نتوانسته به MySQL / MariaDB متصل شود. دلایل رایج:

    • اطلاعات اتصال (نام دیتابیس، کاربر، رمز، میزبان) در wp-config.php اشتباه است
    • سرویس دیتابیس متوقف یا کرش کرده است
    • مجوزهای کاربر دیتابیس اشتباه است
    • جداول دیتابیس خراب شده‌اند
    • سرور تحت فشار (حافظه یا I/O) است

۲. مراحل بررسی و رفع

گام ۱ — بررسی وضعیت سرویس دیتابیس

در SSH این دستورات را اجرا کن:

# وضعیت سرویس
systemctl status mariadb
# یا در بعضی توزیع‌ها
systemctl status mysql

# اگر متوقف بود، اجرا کن:
sudo systemctl start mariadb
# یا
sudo systemctl start mysql

گام ۲ — بررسی تنظیمات اتصال وردپرس

فایل wp-config.php را باز کن (معمولاً در مسیر ریشه وردپرس):

/var/www/html/wp-config.php

مقادیر زیر را بررسی کن و مطمئن شو صحیح هست:

define('DB_NAME', 'نام_دیتابیس');
define('DB_USER', 'نام_کاربر');
define('DB_PASSWORD', 'رمز_عبور');
define('DB_HOST', 'localhost');  // یا '127.0.0.1:3307' اگر پورت متفاوت است

گام ۳ — تست اتصال دستی به دیتابیس

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

mysql -u DB_USER -p
# سپس رمز را وارد کن

اگر خطای Access denied گرفتی، کاربر یا رمز اشتباه است یا کاربر دسترسی ندارد.

گام ۴ — اعطای مجوز به کاربر دیتابیس

اگر به حساب root MySQL دسترسی داری، این دستورات را اجرا کن (نام‌ها را جایگزین کن):

sudo mysql
# در کنسول mysql:
GRANT ALL PRIVILEGES ON DB_NAME.* TO 'DB_USER'@'localhost' IDENTIFIED BY 'DB_PASSWORD';
FLUSH PRIVILEGES;
EXIT;

گام ۵ — تعمیر دیتابیس وردپرس (در صورت خراب شدن جداول)

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

define('WP_ALLOW_REPAIR', true);

سپس در مرورگر برو به:

http://example.com/wp-admin/maint/repair.php

گزینه Repair Database یا Repair and Optimize را اجرا کن. بعد از اتمام فوراً خط WP_ALLOW_REPAIR را از فایل حذف کن.

برای مشاهده آموزش Reapir دیتابیس از طریق SSH اینجا کلیک کنید.

گام ۶ — بررسی منابع سرور

گاهی MySQL پاسخگو نیست چون RAM یا دیسک پر شده یا I/O سنگین است. دستورات برای بررسی:

free -m
top
df -h
iotop   # اگر نصب باشه

اگر حافظه کم است، یا تنظیمات MySQL خیلی بزرگ است (مثلا innodb_buffer_pool_size)، باید آن‌ها را متناسب با RAM تنظیم کنی یا RAM را افزایش دهی.


۳. لاگ‌ها را بررسی کن

خطاهای واقعی را در لاگ‌ها می‌توان دید:

# لاگ MariaDB/MySQL
tail -n 200 /var/log/mysql/error.log
# یا در سیستم‌های دیگر
tail -n 200 /var/log/mysqld.log

# لاگ وب‌سرور (مثلاً LiteSpeed یا Apache)
tail -n 200 /usr/local/lsws/logs/error.log
# یا
tail -n 200 /var/log/apache2/error.log

۴. نکات تکمیلی و مشکلات متداول

مشکل اقدام پیشنهادی
MySQL کرش می‌کند یا از حافظه استفاده زیادی می‌کند بررسی تنظیمات MySQL (innodb_buffer_pool_size)، کاهش اندازه یا افزایش RAM؛ مانیتور پردازش‌ها
اطلاعات wp-config اشتباه است بررسی نام دیتابیس، یوزر و رمز؛ تست اتصال دستی
کاربر دیتابیس دسترسی ندارد اجرای GRANT ALL PRIVILEGES ... و FLUSH PRIVILEGES
دیتابیس خراب است استفاده از ابزار تعمیر وردپرس (repair.php) یا اجرای تعمیر جداول در MySQL
پورت یا هاست دیتابیس متفاوت است در wp-config.php مقدار DB_HOST را مثلاً '127.0.0.1:3307' تنظیم کن

۵. پیشنهاد: اسکریپت ساده برای مانیتور و ری‌استارت خودکار

این اسکریپت ساده وضعیت سرویس MariaDB را چک و در صورت توقف آن را ری‌استارت کرده و لاگ می‌گیرد. (قبل از استفاده آن را بررسی کن)

#!/bin/bash
LOG="/var/log/db-monitor.log"
DATE="$(date '+%F %T')"
if systemctl is-active --quiet mariadb; then
  echo "$DATE - mariadb active" >> "$LOG"
else
  echo "$DATE - mariadb inactive, restarting..." >> "$LOG"
  sudo systemctl restart mariadb
  sleep 3
  if systemctl is-active --quiet mariadb; then
    echo "$DATE - mariadb restarted successfully" >> "$LOG"
  else
    echo "$DATE - FAILED to restart mariadb" >> "$LOG"
  fi
fi

می‌توانی این را با کرون هر 1–5 دقیقه اجرا کنی. اما هشدار: ری‌استارت خودکار فقط یک راه‌حل موقت است — باید علت اصلی را پیدا و رفع کنی.


۶. خلاصه سریع

  • ابتدا سرویس دیتابیس را چک و اجرا کن.
  • مقادیر در wp-config.php را مطمئن شو صحیحند.
  • تست دستی اتصال با mysql -u ... -p.
  • درصورت نیاز مجوزها را با GRANT تنظیم کن.
  • اگر جداول خراب‌اند از WP_ALLOW_REPAIR استفاده کن و پس از تعمیر آن را حذف کن.
  • منابع سرور را بررسی کن و لاگ‌ها را بخوان.
نکته نهایی: همیشه قبل از تغییرات مهم بک‌آپ بگیر و اگر مطمئن نیستی، ابتدا روی محیط آزمایشی امتحان کن.
در پایان
اگر با انجام همه مراحل گفته‌شده همچنان خطا باقی مانده است، به‌احتمال زیاد ایراد از بخش سرور یا تنظیمات میزبان است. در این شرایط بهتر است با تیم پشتیبانی هاست تماس بگیرید تا مشکل را از سمت سرور بررسی و حل کنند.

 

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا