
به اشتراک بگذارید
خطای Can’t connect to local MySQL یکی از مشکلات رایج در مدیریت سرورها و حتی محیطهای توسعه محلی مانند XAMPP یا LAMPP است. این خطا معمولاً زمانی رخ میدهد که سیستم یا نرمافزار نتواند از طریق فایل سوکت یونیکس به دیتابیس MySQL یا MariaDB متصل شود. اگرچه ظاهر خطا ساده به نظر میرسد، اما دلایل متعددی میتواند پشت آن باشد؛ از توقف سرویس MySQL گرفته تا مشکلات مربوط به پیکربندی فایل my.cnf یا حتی تنظیمات دسترسی که در ادامه با اصلی ترین دلایل پشت این خطا آشنا خواهید شد:
- توقف یا عدم اجرای سرویس MySQL/MariaDB
- ناهماهنگی مسیر سوکت در فایلهای پیکربندی
- مشکلات دسترسی (Permissions) فایلها و دایرکتوریهای دیتابیس
- محدودیتها یا موانع ایجاد شده توسط SELinux یا فایروال
- کمبود منابع سیستم مانند RAM یا فضای دیسک
هدف این مقاله ارائه یک راهنمای جامع برای رفع این خطا است؛ به گونهای که کاربران مبتدی و مدیران حرفهای سرور بتوانند به ترتیب مراحل را بررسی کرده و در سریعترین زمان مشکل اتصال دیتابیس لوکال را حل کنند.
آنچه در این مقاله میخوانید:
معرفی خطای Can’t connect to local MySQL server through socket
این خطا زمانی رخ میدهد که نرمافزار یا سیستم نتواند ارتباطی با پایگاه داده MySQL از طریق فایل سوکت برقرار کند. در شرایطی مانند اجرای پروژههای محلی با XAMPP یا LAMPP، یا حتی روی سرورهای لینوکسی در حال استفاده، کاربران ممکن است با این مشکل مواجه شوند

دلایل بروز خطای Can’t connect to local MySQL
مهمترین دلایل بروز این خطا را میتوان در چند دسته کلی خلاصه کرد: اول خاموش بودن یا عدم راهاندازی سرویس MySQL که رایجترین علت است. دوم ناسازگاری یا اشتباه در مسیر فایل سوکت در فایلهای پیکربندی مانند my.cnf که باعث میشود سیستم نتواند سوکت درست را پیدا کند. سوم مشکلات مربوط به دسترسی فایلها و پوشههای دیتابیس یا تغییر مالکیت آنها که مانع برقراری ارتباط میشود. چهارم کمبود منابع سختافزاری مثل RAM یا فضای دیسک که ممکن است سرویس را متوقف کند. و در نهایت، محدودیتهای امنیتی سیستمعامل مانند تنظیمات SELinux یا قوانین فایروال که دسترسی به سوکت یا پورت 3306 را مسدود میکنند.
سرور اختصاصی ایران با سختافزار نسل جدید، پورت ۱۰ گیگ و مدیریت حرفهای با منابع اختصاصی
برای مشاهده پلنهای
سرور اختصاصی ایران
روی دکمه زیر کلیک کنید
سرور اختصاصی ایران
روی دکمه زیر کلیک کنید
۱- بررسی وضعیت سرویس MySQL (اصلیترین علت)
یکی از شایعترین دلایل بروز خطای Can’t connect to local MySQL خاموش بودن سرویس دیتابیس است. برای بررسی وضعیت سرویس میتوانید از دستورات زیر استفاده کنید:
systemctl status mysql
service mysqld status اگر سرویس متوقف شده بود، میتوانید آن را با دستور زیر راهاندازی کنید:
systemctl start mysql ابتدا اگر قصد ریستارت کل سرور را دارید، میتوانید از یکی از دستورات زیر استفاده کنید (هر دو یک کار انجام میدهند و فوراً سرور را ریبوت میکنند):
reboot یا:
systemctl reboot حالا برای اینکه بعد از هر ریبوت، سرویس MySQL بهصورت خودکار هنگام بالا آمدن سیستم اجرا شود (بدون اینکه همین الآن ریبوت کند)، از دستور زیر استفاده میکنیم. این دستور فقط فعالسازی خودکار در بوت را انجام میدهد و ریبوت یا استارت فوری سرویس نیست:
systemctl enable mysql این مرحله در بیشتر مواقع مشکل را برطرف میکند. به خصوص در ERROR 2002 MySQL، که نشاندهنده عدم دسترسی به سرویس در حال اجراست.
2- بررسی مسیر فایل سوکت MySQL
همانطور که پیشتر گفته شد، گاهی مشکل از یکسان نبودن مسیر سوکت در فایلهای پیکربندی است. مسیر پیشفرض معمولاً به شکل زیر است:
/var/lib/mysql/mysql.sock برای بررسی و ویرایش مسیر سوکت، باید فایل پیکربندی اصلی MySQL را با یک ویرایشگر متنی باز کنید. در سیستمعاملهای لینوکسی معمولاً از ویرایشگر nano استفاده میشود. بنابراین با اجرای دستور زیر میتوانید فایل my.cnf را باز کرده و بخشهای مربوط به مسیر سوکت را بررسی و در صورت نیاز اصلاح کنید:
nano /etc/my.cnf حال مطمئن شوید بخشهای
[mysqld] و [client] هر دو دارای مسیر یکسان برای socket= هستند. در صورت تفاوت مسیر، یکی از آنها را ویرایش کنید یا یک لینک نمادین (symlink) ایجاد کنید:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock ۳- بررسی مشکلات سیستمی و دسترسیها
این بخش به کاربر کمک میکند مشکلاتی را که خارج از تنظیمات ساده سرویس یا مسیر سوکت هستند، شناسایی کند. عواملی مثل کمبود منابع سختافزاری، سطح دسترسی نادرست فایلها و محدودیتهای امنیتی (مانند SELinux یا فایروال) میتوانند باعث شوند اتصال به MySQL قطع شود. با بررسی این موارد، میتوان مطمئن شد که مشکل از محدودیتهای سیستم عامل یا منابع نیست و سرویس دیتابیس بدون مانع اجرا میشود.
کمبود منابع
کمبود RAM یا فضای دیسک میتواند باعث توقف سرویس MySQL شود. با دستورات زیر منابع سیستم را بررسی کنید:
df -h
free -m سطح دسترسیها (Permissions)
فایلهای دیتابیس باید تحت مالکیت یوزر
mysql باشند. در غیر این صورت دسترسیها را اصلاح کنید:chown -R mysql:mysql /var/lib/mysql
chmod -R 755 /var/lib/mysql SELinux و فایروال
گاهی اوقات SELinux یا فایروال مانع اتصال میشوند. برای تست سریع میتوانید SELinux را موقتاً غیرفعال کنید:
setenforce 0 همچنین وضعیت فایروال را بررسی کنید تا مطمئن شوید پورت 3306 باز است.
۴- اتصال از طریق TCP/IP (روش جایگزین)
در صورتی که همه مراحل قبلی نتیجهای نداشت و همچنان ERROR 2002 MySQL را داشتید، میتوانید از TCP/IP به جای سوکت استفاده کنید. تفاوت مهم اینجاست که:
- استفاده از
localhost= اتصال از طریق سوکت - استفاده از
127.0.0.1= اتصال از طریق TCP/IP
مثال:
mysql -u root -p -h 127.0.0.1 این روش بهویژه زمانی کاربرد دارد که برنامهها به طور پیشفرض تلاش میکنند از سوکت استفاده کنند، اما شما میخواهید موقتاً از طریق شبکه محلی به دیتابیس متصل شوید.
نکات تکمیلی برای کاربران XAMPP / LAMPP
کاربران محیطهای توسعه محلی نیز ممکن است با ERROR 2002 MySQL مواجه شوند. پیشنهاد میشود:
- بررسی کنید سرویس MySQL در کنترل پنل XAMPP فعال باشد.
- مطمئن شوید هیچ نرمافزار دیگری پورت 3306 را اشغال نکرده باشد.
- مسیر فایل
my.iniرا بررسی کنید و بخشsocketرا با مسیر درست هماهنگ کنید.
نتیجهگیری: خطای Can’t connect to local MySQL
خطای Can’t connect to local MySQL server through socket اگرچه ممکن است برای کاربران مبتدی گیجکننده باشد، اما با طی کردن مراحل سادهای مانند بررسی وضعیت سرویس، تنظیم مسیر سوکت، اصلاح دسترسیها و در صورت نیاز استفاده از TCP/IP بهراحتی قابل رفع است. این مقاله تلاش کرد یک راهنمای کامل و چندوجهی ارائه دهد تا هم توسعهدهندگان و هم مدیران سرور بتوانند در سریعترین زمان ممکن مشکل اتصال دیتابیس لوکال را برطرف کنند. اگر با خطای ERROR 2002 MySQL یا مشکلات مشابه مواجه شدید، از روشهای ذکر شده استفاده کنید و در نهایت لاگهای MySQL را برای عیبیابی دقیقتر بررسی نمایید.
سوالات متداول از ERROR 2002 MySQL
1- چرا خطای Can’t connect to local MySQL server through socket رخ میدهد؟
اصلیترین دلیل خاموش بودن سرویس MySQL یا ناهماهنگی مسیر سوکت در فایل پیکربندی است.




