چرا MySQL در سرور cPanel استارت نمیشود؟
یکی از رایجترین مشکلاتی که مدیران سرور با آن مواجه میشوند، استارت نشدن سرویس MySQL در سرور cPanel است. وقتی MySQL متوقف شود، تمام وبسایتهای روی سرور که به دیتابیس متصل هستند (از جمله سایتهای وردپرسی، جوملا و فروشگاهی) از دسترس خارج میشوند و خطاهایی مانند Error Establishing a Database Connection نمایش داده میشود.
در این مقاله، تمام دلایل احتمالی این مشکل و روشهای رفع آن را به صورت گامبهگام بررسی میکنیم.
دلایل اصلی استارت نشدن MySQL
۱. پر شدن فضای دیسک
شایعترین دلیل استارت نشدن MySQL، پر شدن فضای دیسک سرور است. MySQL برای ایجاد فایلهای موقت، لاگها و جداول InnoDB به فضای آزاد نیاز دارد. برای بررسی فضای دیسک از دستور زیر استفاده کنید:
df -h
اگر پارتیشن / یا /var بیش از ۹۵ درصد پر باشد، باید فوراً فضا آزاد کنید. فایلهای لاگ قدیمی، بکاپهای غیرضروری و فایلهای tmp اولین مواردی هستند که باید پاکسازی شوند.
۲. مشکل مجوزهای پوشه /tmp
MySQL از پوشه /tmp برای ذخیره فایلهای موقت استفاده میکند. اگر مجوزهای این پوشه تغییر کرده باشد، MySQL نمیتواند فایلهای موقت را ایجاد کند و بنابراین استارت نمیشود. برای اصلاح مجوزها:
chown root:root /tmp
chmod 1777 /tmp
عدد 1777 شامل sticky bit است که از حذف فایلهای سایر کاربران جلوگیری میکند.
۳. خرابی فایل پیکربندی my.cnf
فایل /etc/my.cnf تنظیمات اصلی MySQL را نگه میدارد. اگر این فایل دچار خطای نحوی شده باشد یا تنظیمات نادرستی داشته باشد، MySQL استارت نمیشود. برای عیبیابی، فایل فعلی را بکاپ بگیرید و یک فایل پیشفرض جایگزین کنید:
mv /etc/my.cnf /etc/my.cnf.old
سپس MySQL را مجدداً استارت کنید. اگر استارت شد، مشکل از فایل my.cnf بوده و باید تنظیمات را یکییکی بررسی کنید.
۴. خرابی فایلهای InnoDB
فایلهای ib_logfile0 و ib_logfile1 و ibdata1 فایلهای حیاتی موتور InnoDB هستند. خرابی هر کدام از اینها باعث میشود MySQL استارت نشود.
۵. فرآیند MySQL قبلی هنوز اجرا است
گاهی پروسس قبلی MySQL به درستی بسته نشده و فایل PID هنوز وجود دارد. بررسی کنید:
ps aux | grep mysql
cat /var/lib/mysql/*.pid
اگر پروسسی وجود داشت، آن را kill کنید و دوباره استارت کنید.
مراحل عیبیابی گامبهگام
مرحله ۱: بررسی لاگ خطاها
اولین و مهمترین قدم، خواندن لاگ خطاهای MySQL است:
tail -f /var/lib/mysql/$(hostname).err
یا در مسیر دیگر:
tail -100 /var/log/mysqld.log
این لاگ دقیقاً علت استارت نشدن MySQL را مشخص میکند.
مرحله ۲: بررسی فضای دیسک و inode
df -h
df -i
هم فضای دیسک و هم تعداد inode را بررسی کنید. پر شدن هر کدام مانع از استارت MySQL میشود.
مرحله ۳: اصلاح مجوزهای /tmp
chown root:root /tmp
chmod 1777 /tmp
مرحله ۴: تست با فایل پیکربندی پیشفرض
mv /etc/my.cnf /etc/my.cnf.bak
service mysql start
مرحله ۵: اجرای securemysql در cPanel
در سرورهای cPanel، اسکریپت زیر MySQL را بازسازی و امنسازی میکند:
/scripts/securemysql
تنظیمات امنیتی پس از رفع مشکل
بعد از اینکه MySQL با موفقیت استارت شد، تنظیمات امنیتی زیر را در فایل /etc/my.cnf اعمال کنید:
[mysqld]
local-infile=0
skip-symbolic-links
max_connections=150
innodb_buffer_pool_size=256M
تنظیم local-infile=0 از حملات خواندن فایلهای محلی جلوگیری میکند و skip-symbolic-links امنیت فایلسیستم را افزایش میدهد.
جلوگیری از تکرار مشکل
برای پیشگیری از بروز مجدد این مشکل، مانیتورینگ منظم فضای دیسک ضروری است. همچنین تنظیم cron job برای پاکسازی خودکار لاگهای قدیمی، و استفاده از ابزارهایی مانند Monit یا CSF برای ریاستارت خودکار MySQL در صورت توقف توصیه میشود.
اگر سرور شما مرتباً با مشکل MySQL مواجه میشود، احتمالاً منابع سرور (رم و CPU) کافی نیست. در این صورت ارتقا به یک سرور مجازی قدرتمندتر با رم و CPU بیشتر میتواند مشکلساز را از ریشه حل کند.
همچنین اگر تجربه کافی در مدیریت سرور ندارید، استفاده از خدمات کانفیگ و مدیریت سرور میهن هاستینگ میتواند از بروز بسیاری از این مشکلات جلوگیری کند. متخصصان فنی ما MySQL سرور شما را بهینهسازی و مانیتور میکنند.
🖥️ سرور مجازی پرقدرت اروپا
با سرور مجازی میهن هاستینگ، منابع اختصاصی و پشتیبانی ۲۴ ساعته برای MySQL و سرویسهای حیاتی سرور خود داشته باشید.