जब मैं mysql से कनेक्ट करने का प्रयास करता हूं तो मुझे निम्न त्रुटि मिल रही है:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
क्या इस त्रुटि का कोई हल है? इसके पीछे क्या कारण हो सकता है?
जब मैं mysql से कनेक्ट करने का प्रयास करता हूं तो मुझे निम्न त्रुटि मिल रही है:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
क्या इस त्रुटि का कोई हल है? इसके पीछे क्या कारण हो सकता है?
जवाबों:
क्या आप "लोकलहोस्ट" या "127.0.0.1" से जुड़ रहे हैं? मैंने देखा कि जब आप "लोकलहोस्ट" से कनेक्ट करते हैं तो सॉकेट कनेक्टर का उपयोग किया जाता है, लेकिन जब आप "127.0.0.1" से कनेक्ट होते हैं तो टीसीपी / आईपी कनेक्टर का उपयोग किया जाता है। यदि सॉकेट कनेक्टर सक्षम / कार्य नहीं कर रहा है, तो आप "127.0.0.1" का उपयोग करने का प्रयास कर सकते हैं।
/etc/hosts
मेरे docker कंटेनर में फ़ाइल को देखकर मुझे MySql hostname दिखाया गया mysql
। मेरे कनेक्ट कॉन्फ़िगरेशन में इसी होस्टनाम का उपयोग करने से समस्या हल हो गई।
सुनिश्चित करें कि आपकी mysql सेवा चल रही है
service mysqld start
फिर, निम्नलिखित में से एक का प्रयास करें:
(यदि आपने mysql के लिए पासवर्ड सेट नहीं किया है)
mysql -u root
अगर आपने पहले से ही पासवर्ड सेट कर रखा है
mysql -u root -p
service mariadb start
क्योंकि mariadb.org/debian-9-released-mariadb-mysql-variant
यदि आपकी फ़ाइल my.cnf (आमतौर पर आदि फ़ोल्डर में) सही तरीके से कॉन्फ़िगर की गई है
socket=/var/lib/mysql/mysql.sock
आप जांच सकते हैं कि mysql निम्नलिखित कमांड के साथ चल रहा है या नहीं:
mysqladmin -u root -p status
mysql फ़ोल्डर में अपनी अनुमति बदलने का प्रयास करें। यदि आप स्थानीय स्तर पर काम कर रहे हैं, तो आप कोशिश कर सकते हैं:
sudo chmod -R 777 /var/lib/mysql/
यह मेरे लिए हल है
सबसे अधिक संभावना mysql.sock
में मौजूद नहीं है /var/lib/mysql/
।
यदि आपको वही फ़ाइल किसी अन्य स्थान पर मिलती है, तो उसे सिमिलिंक करें:
पूर्व के लिए: मेरे पास है /data/mysql_datadir/mysql.sock
उपयोगकर्ता को mysql पर स्विच करें और नीचे बताए अनुसार निष्पादित करें:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
इससे मेरी समस्या हल हो गई
यदि आप हाल ही के आरएचईएल पर हैं, तो आपको माईसक्यूएल डीबी के बजाय मारीदब (एक खुला स्रोत mysql db) शुरू करने की आवश्यकता हो सकती है:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
फिर आपको सामान्य तरीके से mysql तक पहुंचने में सक्षम होना चाहिए:
mysql -u root -p
mariadb-server
और mariadb
, mysql_secure_installation
कुछ डिफ़ॉल्ट असुरक्षित सेटिंग्स को साफ करने के लिए दौड़ना न भूलें ।
मेरे मामले में मैंने सॉकेट फ़ाइल को अंदर /etc/my.cnf
से किसी अन्य स्थान पर स्थानांतरित कर /var/lib/mysql/mysql.sock
दिया है/tmp/mysql.sock
Mysqld सेवा को पुनरारंभ करने के बाद भी, मैं अभी भी त्रुटि संदेश देखता हूं जब मैं कनेक्ट करने का प्रयास करता हूं।
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
समस्या क्लाइंट को कॉन्फ़िगर करने के तरीके के साथ है। रनिंग डायग्नोस्टिक्स वास्तव में सही सॉकेट पथ दिखाएगा। जैसेps aux | grep mysqld
काम करता है:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
काम नहीं करता:
mysql -uroot -p
mysql -uroot -p -hlocalhost
आप mysql config के अंदर अनुभाग के तहत एक ही सॉकेट लाइन जोड़कर इस समस्या को ठीक कर सकते हैं ।[client]
बस /etc/my.cnf
निम्नलिखित पंक्तियों को संपादित करें को संपादित करेंmy.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Mysql को पुनरारंभ करें और फिर से कनेक्ट करें
mysql -u उपयोगकर्ता -p पासवर्ड डेटाबेस -h होस्ट;
जांचें कि आपकी mysqld सेवा चल रही है या नहीं, अगर नहीं चल रही है, तो सेवा शुरू करें।
यदि आपकी समस्या हल नहीं हुई है, तो /etc/my.cnf
निम्न के लिए देखें और संशोधित करें, जहां आपको एक पंक्ति शुरू होती है socket
। इस अद्यतन को करने से पहले उस फ़ाइल का बैकअप लें।
socket=/var/lib/mysql/mysql.sock
में बदलो
socket=/opt/lampp/var/mysql/mysql.sock -u root
MyDB का एक समुदाय विकसित MariaDB, कई वितरणों में MySQL का डिफ़ॉल्ट कार्यान्वयन बन गया है।
तो पहले आपको शुरू करना चाहिए,
$ sudo systemctl start mariadb
यदि यह विफल रहता है, तो प्रयास करें,
$ sudo systemctl start mysqld
फिर mysql शुरू करने के लिए,
$ mysql -u root -p
आज तक, फेडोरा में पैकेज का नाम दिया गया है mariadb
और उबंटू में इसे कहा जाता है mariadb-server
।
तो आपको इसे स्थापित करना पड़ सकता है, अगर यह आपके सिस्टम में पहले से इंस्टॉल नहीं है।
सुनिश्चित करें कि आपके पास पर्याप्त जगह बची है /var
। यदि MySQL सर्वर ड्राइव करने के लिए अतिरिक्त जानकारी लिखने में सक्षम नहीं है, तो mysql सर्वर प्रारंभ नहीं होगा और यह त्रुटि की ओर जाता हैCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
का उपयोग करने पर विचार करें
expire_logs_days = 10
max_binlog_size = 100M
यह आपको डिस्क उपयोग को कम रखने में मदद करेगा।
innodb_buffer_pool_size
में my.cnf
। एक छोटे से मूल्य की तरह इसे स्थापित करना innodb_buffer_pool_size = 50M
इस परिकल्पना को त्यागने के लिए एक अच्छा परीक्षण है;)
यहाँ मेरे लिए क्या काम किया गया है:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
कृपया जांचें कि क्या कोई अन्य mysql सेवा चल रही है।
सुनिश्चित करें कि आपने सर्वर शुरू किया है:
mysql.server start
फिर रूट उपयोगकर्ता से कनेक्ट करें:
mysql -uroot
यदि आपका mysql पहले काम कर रहा था और अचानक सर्वर को "रिबूट" करना बंद कर दिया है।
मेरे CentOS VPS पर इस समस्या का सामना कर रहा था ।->
लगातार मिल रहा था
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
सभी तकनीकों की कोशिश की, अंत में सर्वर को फिर से शुरू करके मुद्दों को तय किया ->
shutdown -r now
उम्मीद है की यह मदद करेगा !!
यदि आप फ़ाइलों को / var / lib / mysql में बदलते हैं [जैसे कॉपी करें या प्रतिस्थापित करें], तो आपको mysql को फ़ाइलों के स्वामी को सेट करना होगा यदि mariadb.service पुनरारंभ विफल हो गया है तो यह बहुत महत्वपूर्ण है
chown -R mysql: mysql / var / lib / mysql / *
chmod -R 700 / var / lib / mysql / *
सबसे पहले "सेवा mysqld start" डालें और लॉगिन करें
कृपया सुनिश्चित करें कि आपने MySQL सर्वर को सही तरीके से स्थापित किया है, मुझे यह त्रुटि कई बार मिली और मुझे लगता है कि यह सॉकेट से डीबग करना जटिल है, मेरा मतलब है कि इसे पुनर्स्थापित करना आसान हो सकता है।
यदि आप CentOS 7 का उपयोग कर रहे हैं, तो इसे स्थापित करने का सही तरीका है:
सबसे पहले, mysql सामुदायिक स्रोत जोड़ें
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
फिर आप इसे द्वारा स्थापित कर सकते हैं yum install mysql-community-server
इसे systemctl से शुरू करें: systemctl start mysqld
मेरी समस्या यह थी कि मैंने mysql को सफलतापूर्वक स्थापित किया और यह ठीक काम किया।
लेकिन एक दिन, वही त्रुटि हुई।
सॉकेट '/var/lib/mysql/mysql.sock' (2) के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं किया जा सकता है)
और कोई mysql.sock फ़ाइल मौजूद नहीं थी।
इस समस्या ने मेरी समस्या को हल कर दिया और mysql उठ गया और फिर से चल रहा था:
रूट के रूप में लॉग इन करें:
sudo su -
Daud:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
जड़ के रूप में परीक्षण करें:
mysql -u root -p
mysql अब उठकर चलना चाहिए।
मुझे उम्मीद है कि यह किसी और की भी मदद कर सकता है।
ध्यान दें कि जब mysql my.cnf फ़ाइल से सॉकेटफाइल के स्थान की जानकारी पढ़ता है, तो mysql_secure_installation प्रोग्राम कई बार ऐसा सही ढंग से नहीं करता है।
इसलिए यदि आप मेरे जैसे हैं और इंस्टालेशन के समय चीजों को फेरबदल करते हैं, तो आप उस स्थिति में पहुंच सकते हैं, जहां आप डेटाबेस को mysql के साथ ठीक से जोड़ सकते हैं, लेकिन इस चीज को सुरक्षित नहीं किया जा सकता है (वैसे भी उस स्क्रिप्ट का उपयोग नहीं)।
इसे ठीक करने के लिए sreddy का सुझाव अच्छी तरह से काम करता है: एक सॉफ्टलिंक बनाएं जहां से स्क्रिप्ट को सॉकेट की अपेक्षा होगी कि वह वास्तव में कहां है। उदाहरण:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(मैं सॉकेट के लिए / tmp / एक डिफ़ॉल्ट स्थान के रूप में उपयोग करता हूं)
इस त्रुटि को पुन: उत्पन्न करने का एक तरीका: यदि आप एक विदेशी सर्वर से कनेक्ट करना चाहते हैं, लेकिन इसके बजाय गैर-मौजूद स्थानीय से कनेक्ट करें:
eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $
इसलिए आपको मेजबान को इस तरह निर्दिष्ट करना होगा:
eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
यह एक बेवकूफी भरा सुझाव हो सकता है लेकिन सुनिश्चित करें कि आपका DB अभी भी लोकलहोस्ट में होस्ट किया गया है। उदाहरण के लिए, यदि किसी नेटवर्क व्यवस्थापक ने अमेज़ॅन DB होस्टिंग को चुना (या बदल दिया गया), तो आपको इसके बजाय उस होस्टनाम की आवश्यकता होगी!
मेरे मामले में, मैं एक नया डेटाबेस आयात कर रहा था, और मैं उसके बाद फिर से कनेक्ट करने में सक्षम नहीं था। अंत में मुझे एहसास हुआ कि यह एक अंतरिक्ष समस्या थी।
तो आप पिछले डेटाबेस को हटा सकते हैं और आपको हार्ड ड्राइव या जो मैंने किया है, उसका विस्तार करके मेरी वर्चुअल मशीन का स्नैपशॉट पुनर्स्थापित कर सकते हैं।
बस के मामले में किसी को लगता है कि उपयोगी है
यदि आप डिस्क स्थान से बाहर चल रहे हैं तो यह एक समस्या है। समाधान HDD से कुछ स्थान खाली करना है।
कृपया स्पष्टीकरण के लिए और अधिक पढ़ें:
यदि आप LINUX में MySQL चला रहे हैं, तो कमांड डिस्क मुक्त के साथ HDD के मुक्त स्थान की जाँच करें:
df
अगर आपको ऐसा कुछ मिल रहा है:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5162828 4902260 0 100% /
udev 156676 84 156592 1% /dev
/dev/sda3 3107124 70844 2878444 3% /home
तब यह समस्या है और अब आपके पास इसका समाधान है!
चूंकि mysql.sock mysql फ़ोल्डर में बनाया जाना चाहता है, जो लगभग हमेशा रूट फ़ोल्डर के अंतर्गत होता है, क्योंकि स्थान की कमी के कारण इसे प्राप्त नहीं किया जा सकता है।
यदि आप समय-समय पर mysql डायरेक्टरी के तहत ls कमांड देते हैं (OpenSUSE 11.1 पर / var / lib / mysql पर) तो आपको कुछ ऐसा मिलेगा:
hostname:/var/lib/mysql #
.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
Mysql.sock फ़ाइल अक्सर दिखाई देती है और गायब हो जाती है (आपको फ़ोल्डर पर mysql.sock फ़ाइल के साथ आवृत्ति हिट करने के लिए ls के साथ आवंटित करने की कोशिश करनी चाहिए)।
यह पर्याप्त डिस्क स्थान के कारण नहीं है।
मुझे उम्मीद है कि मैं कुछ लोगों की मदद करूँगा !!!! धन्यवाद!
पहले 2, 3 समाधान का प्रयास करें। त्रुटि स्टिल पॉपअप है और यदि आप नहीं पा सकते हैं/var/lib/mysql/mysql.sock
find /var/ -name mysql.sock
/ Var / में उपलब्ध स्थान की जाँच करें
df
यदि निर्देशिका पूर्ण है तो कुछ अप्रयुक्त फ़ाइल / निर्देशिका को हटा दें
rm /var/cache/*
संभवतः अब आपका मुद्दा सुलझ जाएगा।
यदि आप sf.net के शेल में हैं , तो प्रयास करें:
mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
{LETTER} और {GROUP ID} बदलें, जैसा कि आपके MySQL डाटाबेस ऑफ प्रोजेक्ट एडमिन प्रोफाइल में दिखाया गया है।