این مقاله، اقدامات لازم برای رفع خطای "ERROR 2003 (HY000): Can’t connect to MySQL server on ‘127.0.0.1’ (111)" را ارائه می دهد؛ که ممکن است هنگام دسترسی به سرور پایگاه داده MySQL با آن رو به رو شوید.
اگر شما یک کاربر جدید لینوکس هستید؛ که به تازگی با MySQL/MariaDB آشنا شده اید، پیشنهاد می کنیم مقاله "چگونگی نصب Apche، MySQL و PHP برروی Ubuntu 18.04" را مطالعه نمایید.
از طرف دیگر، اگر از قبل یک کاربر با تجربه MySQL هستید؛ می‌توانید با مطالعه مقاله "نکات مفید برای رفع خطاهای رایج در MySQL" بر مهارت خود بیفزایید.

 


توجه: در این آموزش فرض بر این است که شما قبلاً سرور پایگاه داده mysql را نصب کرده‌اید.
برخی از دلایل احتمالی رخداد خطای "ERROR 2003 (HY000): Can’t connect to MySQL server on ‘127.0.0.1’ (111)" می‌تواند به صورت زیر باشد:
•    خرابی شبکه، به ویژه اگر سرور پایگاه داده mysql برروی یک هاست ریموت در حال اجرا باشد.
•    عدم اجرای هیچ سرور mysql بر روی آن هاست
•    مسدود شدن اتصال TCP-IP توسط فایروال
•        ...
در ادامه، اقدامات اساسی برای مقابله با این خطا ارائه شده‌است.

 

1. اگر سرور پایگاه داده برروی یک دستگاه ریموت باشد:
در این صورت، اتصال کلاینت-سرور را با استفاده از دستور ping تست کنید، به عنوان مثال:

 ping server_ip_address $

 

 

پس از برقراری اتصال، از دستور ps که اطلاعات مربوط به انتخاب فرآیندهای فعال را نشان می‌دهد، به همراه یک دستور pipe و grep استفاده کنید؛ تا بررسی نمایید که آیا mysql روی سیستم شما اجرا شده‌است یا خیر.

 ps -Af | grep mysqld $

که در آن گزینه‌های استفاده شده به صورت زیر هستند:

A- : نمایش تمامی فرآیندهای فعال در سیستم لینوکس
f- : برای لیست کردن جزئیات دقیق مربوط به هر فرآیند

اگر دستور قبلی خروجی نداشت، سرویس mysql را به صورت زیر راه‌اندازی کنید:

sudo systemctl start mysql.service $
sudo systemctl start mariadb.service $
OR
sudo /etc/init.d/mysqld start #

 پس از راه‌اندازی سرویس mysql، سعی کنید به صورت زیر به سرور پایگاه داده دسترسی پیدا کنید:

 mysql -u username -p -h host_address $

 

2. اگر باز هم با همین خطا برخورد کردید:

سپس پورتی را که کلاینت mysql شنود می‌کند(پیش فرض 3306 است)، با اجرای دستور netstat تعیین نمایید.

netstat -lnp | grep mysql $

که در آن گزینه‌ها به صورت زیر می‌باشند:
l- : نمایش پورت‌های در حال شنود
n- : فعال کردن امکان نمایش آدرسهای عددی
p- : نمایش PID و نام برنامه صاحب سوکت

بنابراین گزینه P-، پورتی را معرفی می‌کند که از خروجی بالا هنگام دسترسی به سرور پایگاه داده مشاهده می‌شود:

mysql -u username -p -h host_address -P port $

 

3. اگر تمام دستورات فوق با موفقیت اجرا شد، اما هنوز آن خطا را مشاهده می‌کنید:

فایل پیکربندی mysql را باز کنید.

 vi /etc/mysql/my.cnf $
OR
 vi /etc/mysql/mysql.conf.d/mysqld.cnf $

به دنبال خطی بگردید که شامل عبارت زیر باشد و آن خط را با استفاده از کاراکتر # به کامنت تبدیل نمایید:
bind-address = 127.0.0.1
فایل را ذخیره کرده و از آن خارج شوید، سپس سرویس mysql را دوباره راه‌اندازی کنید.

 sudo systemctl start mysql.service $
sudo systemctl start mariadb.service $
OR
sudo /etc/init.d/mysqld start #


در این هنگام اگر FirewallD یا Iptables در حال اجرا هستند، سعی کنید سرویس‌های فایروال را بررسی کرده و پورت mysql را باز نمایید، با فرض اینکه فایروال اتصالات TCP-IP را به سرور mysql شما مسدود کرده‌است.

 

منبع:

tecmint