Troubleshoot Socket Errors in MySQL

Introduction

MySQL ஆனது தரவுத்தள சேவையகத்திற்கான இணைப்புகளை ஒரு socket fileஇது ஒரு சிறப்பு வகையான கோப்பு, இது பல்வேறு செயல்முறைகளுக்கு இடையே தொடர்புகளை எளிதாக்குகிறது The MySQL சேவையகத்தின் socket file mysqld.sock என்று பெயரிடப்பட்டது மற்றும் Ubuntu systems it’s usually இது பொதுவாக /var/run/mysqld/ directory-ல் சேமிக்கப்படும். இந்த கோப்பு தானாகவே MySQL (service) சேவையால் உருவாக்கப்பட்டது.

சில நேரங்களில், உங்கள் கணினியில் அல்லது உங்கள் MySQL உள்ளமைவில் ஏற்படும் மாற்றங்கள் MySQL இல் socket file படிக்க முடியாமல், உங்கள் தரவுத்தளங்களுக்கான அணுகலைப் பெறுவதைத் தடுக்கும். மிகவும் பொதுவான socket error இதுபோல் தெரிகிறது: # service mysql status (or) # systemctl status mysql 

  1. sudo service mysql status
Output:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/run/mysqld/mysqld.sock' (2)

இந்த பிழை ஏற்படுவதற்கு சில காரணங்கள் உள்ளன, மேலும் அதை தீர்க்க சில சாத்தியமான வழிகள் உள்ளன.

இந்த பிழையின் ஒரு பொதுவான காரணம் என்னவென்றால், MySQL சேவை நிறுத்தப்பட்டது அல்லது தொடங்கவில்லை (MySQL service is stopped or did not start), அதாவது முதலில் socket file உருவாக்க முடியவில்லை. இந்த பிழையை நீங்கள் காண்பதற்கான காரணம் இதுதான் என்பதை அறிய, systemctl உடன் சேவையைத் (service) தொடங்க முயற்சிக்கவும்.

  1. sudo systemctl start mysql

பின்னர் மீண்டும் MySQL வரியில் அணுக முயற்சிக்கவும். நீங்கள் இன்னும் பெற்றால், உங்கள் MySQL நிறுவல் socket file தேடும் இடத்தை இருமுறை சரிபார்க்கவும். இந்த தகவலை mysqld.cnf file காணலாம்:

  1. sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

இந்த file [mysqld] பிரிவில் socket parameter (அளவுருவைத்) தேடுங்கள். இது இப்படி இருக்கும்:

/etc/mysql/mysql.conf.d/mysqld.cnf
. . .
[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
. . .

இந்தக் கோப்பை மூடிவிட்டு, MySQL அதைக் கண்டுபிடிக்க எதிர்பார்க்கும் கோப்பகத்தில் ls கட்டளையை இயக்குவதன் மூலம்  mysqld.sock file இருப்பதை உறுதிப்படுத்தவும்:

  1. ls -a /var/run/mysqld/

socket file இருந்தால், இந்த கட்டளையின் (command’s) வெளியீட்டில் அதைக் காண்பீர்கள்:

Output
. .. mysqld.pid mysqld.sock mysqld.sock.lock

கோப்பு இல்லை என்றால், MySQL அதை உருவாக்க முயற்சிக்கிறது, ஆனால் அதற்கான (adequate permissions) போதுமான அனுமதிகள் இல்லை. கோப்பகத்தின் உரிமையை mysql பயனர் மற்றும் குழுவிற்கு (mysql user and group) மாற்றுவதன் மூலம் சரியான அனுமதிகள் உள்ளனவா என்பதை உறுதிசெய்யலாம்:

  1. sudo chown mysql:mysql /var/run/mysqld/

பின்னர் mysql பயனருக்கு கோப்பகத்தில் உரிய அனுமதிகள் உள்ளதா (appropriate permissions over the directory) என்பதை உறுதிப்படுத்தவும். இவற்றை 775 ஆக அமைப்பது பெரும்பாலான சந்தர்ப்பங்களில் வேலை செய்யும்:

  1. sudo chmod -R 755 /var/run/mysqld/

இறுதியாக, MySQL சேவையை மறுதொடக்கம் செய்யவும், அதனால் மீண்டும் socket file உருவாக்க முயற்சி செய்யலாம்:

  1. sudo systemctl restart mysql

பின்னர் மீண்டும் ஒருமுறை MySQL prompt அணுக முயற்சிக்கவும். நீங்கள் இன்னும் socket error பிழையை எதிர்கொண்டால், உங்கள் MySQL instance ஒரு ஆழமான சிக்கல் (deeper issue) இருக்கலாம், அப்படியானால் ஏதேனும் தடயங்களை வழங்க முடியுமா என்பதைப் பார்க்க பிழை பதிவை (review the error log) நீங்கள் மதிப்பாய்வு செய்ய வேண்டும்.

Previous Post Next Post