सॉकेट '/tmp/mysql.sock के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता


126

जब मैंने अपने परीक्षण सूट के दौरान एक स्थानीय MySQL सर्वर से कनेक्ट करने का प्रयास किया, तो यह त्रुटि के साथ विफल हो जाता है:

OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")

हालाँकि, मैं हर समय सक्षम हूँ, कमांड लाइन mysqlप्रोग्राम चलाकर MySQL से कनेक्ट करें । एक ps aux | grep mysqlशो सर्वर चल रहा है, और stat /tmp/mysql.sockइस बात की पुष्टि है कि सॉकेट मौजूद है। इसके अलावा, अगर मैं exceptउस अपवाद के खंड में एक डिबगर खोलता हूं, तो मैं सटीक रूप से सटीक समान मापदंडों से जुड़ने में सक्षम हूं।

यह समस्या काफी विश्वसनीय रूप से पुन: पेश करती है, हालांकि यह 100% प्रतीत नहीं होती है, क्योंकि हर बार एक नीला चाँद में, मेरा परीक्षण सूट वास्तव में इस त्रुटि को मारने के बिना चलता है। जब मैंने sudo dtrussइसके साथ चलने का प्रयास किया, तो पुन: पेश नहीं किया।

सभी ग्राहक कोड पाइथन में हैं, हालांकि मैं यह पता नहीं लगा सकता कि यह कैसे प्रासंगिक होगा।

होस्ट 127.0.0.1का उपयोग करने के लिए स्विच करने से त्रुटि उत्पन्न होती है:

DatabaseError: Can't connect to MySQL server on '127.0.0.1' (61)

1
क्या यह संभव है कि आप किसी तरह कई समवर्ती कनेक्शन के साथ डेटाबेस को मार रहे हैं? हो सकता है कि max_connectionsआपकी MySQL conf फ़ाइल में वृद्धि करने का प्रयास करें?
१३:१३ को १०:३६

2
mysql -h 127.0.0.1कमांडलाइन से काम करता है ? मुझे यकीन नहीं है कि आपका mysql सर्वर वास्तव में एक TCP पोर्ट पर सुन रहा है।
एली

1
क्या आप सुनिश्चित हैं कि आपके पास MySQL के संस्करण के लिए पायथन MySQL क्लाइंट पुस्तकालयों के सही संस्करण हैं? इसके अलावा, mysql -h localhostमज़बूती से काम करता है?
पुराना प्रो

2
क्या MySQL त्रुटि लॉग में कुछ भी लॉग करता है? इसके अलावा, /tmp/mysql.sock और अपने mysql डेटा निर्देशिका पर फ़ाइल अनुमतियों की जाँच करें। यदि आप परीक्षण सूट को रूट (sudo) के रूप में चलाते हैं, तो क्या त्रुटियाँ भी होती हैं?
एरिक सेडरस्टैंड

2
इन सुझावों में से कई आधिकारिक MySQL संदर्भ मैनुअल द्वारा कवर किए गए हैं जो मैं नीचे अपनी प्रतिक्रिया में संदर्भित करता हूं। यह उन सुझावों में से सिर्फ एक या दो को आजमाने के बजाय, MySQL संदर्भ मैनुअल सुझावों के माध्यम से व्यवस्थित रूप से जाने के लिए समय का बेहतर उपयोग है।
jtoberon

जवाबों:


152
sudo /usr/local/mysql/support-files/mysql.server start 

इसने मेरे लिए काम किया। हालांकि, अगर यह काम नहीं करता है, तो सुनिश्चित करें कि mysqld चल रहा है और कनेक्ट करने का प्रयास करें।


1
मैंने 2 सप्ताह से अधिक का समय बिताया है (मजाक भी नहीं कर रहा है) और यह सबसे करीबी है जो मुझे आखिरकार जुड़ने में सक्षम हो गया है। यह हालांकि 'शुरू हो रहा है mysql' ..... लेकिन धन्यवाद, अच्छी पोस्ट!
एल। क्लॉटज़

2
sudo: /usr/local/mysql/support-files/mysql.server: कमांड नहीं मिली। क्यों?
स्याम पिल्लई

1
सूडो के बाद एक बृहदान्त्र क्यों? जांच करें कि क्या रास्ता मौजूद है
प्रत्यूष

या, अगर mysql homebrew के साथ स्थापित किया गया है: sudo
/usr/local/Cellar/mysql/<version>/support-files/mysql.server

1
सर्वर पीआईडी ​​फ़ाइल (/var/lib/mysql/Saranshs-MacBook-Pro.local.pid) को अपडेट किए बिना छोड़ दिया।
सरनह ३

90

MySQL मैनुअल का प्रासंगिक अनुभाग यहाँ है । मैं वहाँ सूचीबद्ध डीबगिंग चरणों के माध्यम से जाना शुरू करूँगा।

यह भी याद रखें कि लोकलहोस्ट और 127.0.0.1 इस संदर्भ में समान नहीं हैं:

  • यदि होस्ट पर सेट किया गया है localhost, तो एक सॉकेट या पाइप का उपयोग किया जाता है।
  • यदि होस्ट पर सेट किया गया है 127.0.0.1, तो ग्राहक टीसीपी / आईपी का उपयोग करने के लिए मजबूर है।

इसलिए, उदाहरण के लिए, आप जांच सकते हैं कि क्या आपका डेटाबेस टीसीपी कनेक्शन vi के लिए सुन रहा है netstat -nlp। ऐसा लगता है कि यह टीसीपी कनेक्शन के लिए सुन रहा है क्योंकि आप कहते हैं कि यह mysql -h 127.0.0.1ठीक काम करता है। यह जाँचने के लिए कि क्या आप सॉकेट्स के माध्यम से अपने डेटाबेस से जुड़ सकते हैं, उपयोग करेंmysql -h localhost

यदि इसमें से कोई भी मदद नहीं करता है, तो आपको संभवतः अपने MySQL कॉन्फिग के बारे में अधिक विवरण पोस्ट करने की आवश्यकता है, ठीक इसी तरह से आप कनेक्शन को कैसे इंस्टेंट कर रहे हैं, आदि।


हालांकि सामान्य रूप से स्थापित नैदानिक ​​प्रक्रियाओं में एक अच्छा विचार है, यदि आप उस प्रश्न (और प्रक्रियाओं) को पढ़ते हैं जो आप देखते हैं कि प्रक्रियाओं का पालन किया गया है और निर्धारित किया है कि यह MySQL सर्वर के साथ कोई समस्या नहीं है। यह विशेष रूप से पायथन क्लाइंट के साथ कुछ करना है क्योंकि सॉकेट के माध्यम से अन्य सभी पहुंच ठीक काम करती है, जिसमें पायथन से अन्य एक्सेस भी शामिल है।
पुराना प्रो

1
क्या एक अजीब नीचे वोट। मैंने कई कारणों से स्थापित प्रक्रिया को पोस्ट किया: (1) अन्य लोग स्थापित प्रक्रिया का केवल एक हिस्सा पोस्ट कर रहे थे और डिबगिंग के बारे में व्यवस्थित होना बेहतर है, (2) स्थानीयहोस्ट बनाम 127.0.0.1, और (3 के बारे में कुछ भ्रम प्रतीत हो रहा था) ) अन्य लोगों को "स्थानीय mysql सर्वर से कनेक्ट नहीं किया जा सकता" लक्षण इस प्रश्न पर ठोकर की संभावना है। मुझे पता है कि यह पायथन क्लाइंट की संभावना है, यही वजह है कि मैंने अधिक जानकारी के लिए कहा, उदाहरण के लिए कि कैसे कनेक्शन को तत्काल किया जा रहा है।
jtoberon

4
+1 मुझे यह त्रुटि एक ssh सुरंग ( localhostमेजबान के रूप में उपयोग ) के माध्यम से mysql से कनेक्ट करने की कोशिश कर रही थी । 127.0.0.1इसे बदलने के लिए ।
मारक

रिकॉर्ड के लिए, इसने मेरा मुद्दा तय किया: "सॉकेट '/tmp/mysql.sock' के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं किया जा सकता है"।
प्रिन्सिअस

धन्यवाद! यह इस काम के लिए मेरे लिए काम कर रहा है, जबकि एक डॉक मारिडब कंटेनर से कनेक्ट करने की कोशिश कर रहा है।
लूसियन ऑपेरा

86

मेरे लिए समस्या यह थी कि मैं mysql सर्वर नहीं चला रहा था। पहले सर्वर चलाएं और फिर निष्पादित करें mysql

$ mysql.server start
$ mysql -h localhost -u root -p

28

मैंने अपनी दुकान पर ऐसा होता देखा है जब मेरे देवों के पास स्टैम्प मैनेजर होता है जैसे कि एमएनपी स्थापित होता है जो कि एक गैर मानक स्थान पर स्थापित MySQL के साथ पूर्वनिर्मित होता है।

अपने टर्मिनल रन पर

mysql_config --socket

जो आपको जुर्राब फ़ाइल के लिए अपना रास्ता देगा। उस पथ को ले लो और इसे अपने DATABASES HOST पैरामेटर में उपयोग करें।

आपको जो करने की आवश्यकता है वह है आपकी बात

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'test',
        'PASSWORD': 'test',
        'HOST': '/Applications/MAMP/tmp/mysql/mysql.sock',
        'PORT': '',
    },
}

ध्यान दें

यह भी चलाएं which mysql_configकि यदि आपके पास किसी तरह से mysql सर्वर के कई इंस्टेंस हैं, तो आप उस मशीन पर इंस्टॉल हो सकते हैं जिसे आप गलत से कनेक्ट कर रहे हैं।


क्या होगा अगर आपकी जुर्राब फ़ाइल गायब है?
AlxVallejo

दूसरी जोड़ी खरीदें? j / k का मतलब है कि mysql सर्विस नहीं चल रही है। शुरू करें / अपने mysql को पुनः आरंभ करें
फ्रांसिस याकोनिएलो

6
मेरे मामले में, HOST को "लोकलहोस्ट" से बदलकर "127.0.0.1" करने से समस्या हल हो गई।
लुकास्वक्सप

@lucaswxp: मेरे मामले में मुझे डोमेन नाम के साथ लोकलहोस्ट को बदलना है
अंशुल मिश्रा

19

अभी-अभी बदली HOSTसे localhostकरने के लिए 127.0.0.1है और यह ठीक काम करता है:

# settings.py of Django project
...

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db_name',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': '127.0.0.1',
        'PORT': '',
},
...

4
यह जानना अच्छा होगा कि आपने कौन सी फ़ाइल बदली और यह कहाँ स्थित है
Empi

1
में settings.pyइस परियोजना की।
Sirbito X

11

जब, यदि आप मैक ओएसएक्स में अपने डेमन myqql खो देते हैं, लेकिन निजी / छूट में छूट के लिए अन्य मार्ग में मौजूद है

1)

ln -s /private/var/mysql/mysql.sock /tmp/mysql.sock

2) mysql के साथ अपने संबंध को पुनः आरंभ करें:

mysql -u username -p -h host databasename

मरदब के लिए भी काम करता है


9

टर्मिनल में नीचे cmd चलाएँ

/ Usr / स्थानीय / mysql / bin / mysqld_safe

यहाँ छवि विवरण दर्ज करें

फिर प्रभावी होने के लिए मशीन को पुनरारंभ करें। यह काम करता हैं!!


1
यह मेरे लिए आईमैक पर काम कर रहा था जो हाई सिएरा चल रहा था जिसे मोजेव में अपग्रेड किया गया था। क्या हुआ होगा mysql.sock फ़ाइल tmp में थी और अपग्रेड पर हटा दी गई थी। जैसा कि सॉकेट स्वचालित रूप से MySQL शुरू करने पर बनाया गया है, आपको बस यह सुनिश्चित करने की आवश्यकता है कि MySQL बंद हो गया है और फिर इसे ऊपर की तरह सुरक्षित मोड में शुरू करें। Mysql.sock फ़ाइल जादुई रूप से प्रकट होती है।
डेविड

8

Lsof कमांड का उपयोग करके mysql प्रक्रिया के लिए खुली फाइलों की संख्या की जाँच करें।

खुली फ़ाइलों की सीमा बढ़ाएँ और फिर से चलाएँ।


मैं इससे पहले भी चला चुका हूं, और आप अपनी .cnf फ़ाइल के माध्यम से ऐसा करने में सक्षम नहीं हैं। आपको वास्तव में ulimitअपने क्लाइंट और सर्वर को खुली फाइलों की संख्या बढ़ाने की आवश्यकता हो सकती है । यदि आप ubuntu के हालिया संस्करण पर हैं, तो इसे / etc / init में mysql upstart स्क्रिप्ट को संपादित करने की आवश्यकता हो सकती है, लेकिन उम्मीद है कि आप इसे केवल .cnf फ़ाइल में कर सकते हैं।
underrun

8

इन समाधानों में से कुछ का प्रयास करने और कोई सफलता नहीं मिलने के बाद, यह मेरे लिए काम कर रहा है:

  1. सिस्टम को पुनरारंभ करें
  2. mysql.server प्रारंभ
  3. सफलता!

7

यह निम्नलिखित समस्याओं में से एक हो सकती है।

  1. गलत mysql लॉक। समाधान: आपको सही mysql सॉकेट का पता लगाना होगा,

mysqladmin -p वैरिएबल | grep सॉकेट

और फिर इसे अपने db कनेक्शन कोड में डालें:

pymysql.connect(db='db', user='user', passwd='pwd', unix_socket="/tmp/mysql.sock")

/tmp/mysql.sock को grep से लौटाया जाता है

2. सही mysql पोर्ट समाधान: आप सही mysql पोर्ट का पता लगाने के लिए है:

mysqladmin -p variables | grep port

और फिर अपने कोड में:

pymysql.connect(db='db', user='user', passwd='pwd', host='localhost', port=3306)

3306 grep से लौटाया गया पोर्ट है

मुझे लगता है कि पहला विकल्प आपकी समस्या का समाधान करेगा।


6

होमब्रेव के माध्यम से 5.7 से 8.0 तक अपग्रेड करने वालों के लिए, यह त्रुटि संभवत: अपग्रेड पूरा नहीं होने के कारण होती है। मेरे मामले में, mysql.server startमुझे निम्नलिखित त्रुटि मिली:

त्रुटि! सर्वर पीआईडी ​​फ़ाइल को अपडेट किए बिना छोड़ दिया

मैंने तब लॉग फ़ाइल की जाँच की cat /usr/local/var/mysql/YOURS.err | tail -n 50, और निम्नलिखित पाया:

InnoDB: क्रैश के बाद अपग्रेड नहीं किया गया है।

यदि आप एक ही नाव पर हैं, तो पहले mysql@5.7होमब्रे के माध्यम से इंस्टॉल करें, सर्वर बंद करें, और फिर 8.0 सिस्टम को फिर से शुरू करें।

brew install mysql@5.7

/usr/local/opt/mysql@5.7/bin/mysql.server start
/usr/local/opt/mysql@5.7/bin/mysql.server stop

फिर,

mysql.server start

इससे आपका MySQL (8.0) फिर से काम कर जाएगा।


मुझे ERROR! The server quit without updating PID fileफिर से वही मिलता है ।
विस्मयकारी जूल

मेरे मामले में मैंने अभी mysql@5.7 स्थापित किया है और नवीनतम हटा दिया है। सब कुछ शुरू हो गया। कोई डेटाबेस नहीं हटाया गया।
एंड्रयू लुका

4

मुझे लगता है कि मैंने कुछ समय पहले ऐसा ही व्यवहार देखा था, लेकिन विवरणों को याद नहीं कर सकता।
हमारे मामले में, समस्या यह थी कि टेस्टिंगरूनर डेटाबेस कनेक्शन को पहले डेटाबेस इंटरेक्शन के सापेक्ष शुरू करता है, उदाहरण के लिए, सेटिंग्स में एक मॉड्यूल के आयात से या कुछ __init__.py। मैं कुछ और जानकारी खोदने की कोशिश करूँगा, लेकिन यह पहले से ही आपके मामले की घंटी बजा सकता है।


4

सुनिश्चित करें कि आपके / etc / host 127.0.0.1 localhostमें है और इसे ठीक काम करना चाहिए


आश्चर्यजनक रूप से (सम्मान के साथ) इसने मेरे लिए इसे सॉर्ट किया - इसकी जाँच करने पर मैंने पाया कि जब वेबदाव मैवरिक्स को स्थापित करने की कोशिश की जा रही थी, तो मैंने अपने होस्ट फ़ाइल में कुछ अतिरिक्त (पूरी तरह से गार्बल्ड) लाइनें जोड़ दीं - जिसमें लोकलहोस्ट फिर से दिया गया था।
रोब_वासा_तकेन

4

मैं इस पर दो डरपोक अनुमान है

संबंध # 1

/tmp/mysql.sockफ़ाइल तक पहुँचने में सक्षम नहीं होने की संभावना को देखें । जब मैं MySQL डेटाबेस सेटअप करता हूं, तो मैं सामान्य रूप से सॉकेट फ़ाइल साइट को अंदर आने देता हूं /var/lib/mysql। यदि आप mysql में लॉगिन root@localhostकरते हैं, तो आपके OS सत्र को /tmpफ़ोल्डर तक पहुंचने की आवश्यकता है । सुनिश्चित करें कि /tmpOS में सही एक्सेस अधिकार हैं। इसके अलावा, सुनिश्चित करें कि sudo उपयोगकर्ता हमेशा फ़ाइल को पढ़ सकता है /tmp

संबंध # 2

के माध्यम से mysql तक पहुँचना 127.0.0.1यदि आप ध्यान नहीं दे रहे हैं तो कुछ भ्रम पैदा कर सकता है। कैसे?

कमांड लाइन से, यदि आप MySQL से जुड़ते हैं, तो आपको 127.0.0.1TCP / IP प्रोटोकॉल निर्दिष्ट करना पड़ सकता है।

mysql -uroot -p -h127.0.0.1 --protocol=tcp

या DNS नाम का प्रयास करें

mysql -uroot -p -hDNSNAME

यह लॉगिंग को बायपास करेगा root@localhost, लेकिन सुनिश्चित करें कि आपने root@'127.0.0.1'परिभाषित किया है।

अगली बार जब आप MySQL से कनेक्ट होते हैं, तो इसे चलाएं:

SELECT USER(),CURRENT_USER();

यह आपको क्या देता है?

  • USER () रिपोर्ट करता है कि आपने MySQL में कैसे प्रमाणित करने का प्रयास किया
  • CURRENT_USER () रिपोर्ट करता है कि आपको MySQL में प्रमाणित करने की अनुमति कैसे दी गई

यदि ये फ़ंक्शन समान मानों के साथ वापस आते हैं, तो आप कनेक्ट कर रहे हैं और अपेक्षा के अनुसार प्रमाणीकरण कर रहे हैं। यदि मान भिन्न हैं, तो आपको संबंधित उपयोगकर्ता बनाने की आवश्यकता हो सकती है root@127.0.0.1


3

यही समस्या थी। बाहर निकलना mysqldबंद हो गया था (मैं मैक ओएसएक्स पर हूं)। मैंने इसे फिर से शुरू किया और त्रुटि दूर हो गई।

मुझे लगा कि mysqldइस लिंक के कारण बड़े पैमाने पर नहीं चल रहा है: http://dev.mysql.com/doc/refman/5.6/en/can-not-connect-to-server.html

पहली टिप नोटिस!


3

यदि आपको नीचे की तरह त्रुटि मिलती है:

django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")

फिर बस अपना mysqld.sock फ़ाइल स्थान ढूंढें और इसे "HOST" में जोड़ें।

जैसे मैं लिनक्स पर xampp का उपयोग कर रहा हूं, इसलिए मेरी mysqld.sockफ़ाइल किसी अन्य स्थान पर है। इसलिए यह ' /var/run/mysqld/mysqld.sock' के लिए काम नहीं कर रहा है

DATABASES = {

    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'asd',
        'USER' : 'root',
        'PASSWORD' : '',
        'HOST' : '/opt/lampp/var/mysql/mysql.sock',
        'PORT' : ''
    }
}

2

जांचें कि आपका mysql अधिकतम कनेक्शन तक नहीं पहुंचा है, या किसी प्रकार के बूटिंग लूप में नहीं है जैसा कि अक्सर होता है यदि सेटिंग्स my.cnf में गलत हैं।

Ps aux का प्रयोग करें | Grep mysql यह जांचने के लिए कि क्या पीआईडी ​​बदल रहा है।


2

योगदान नहीं करने के लिए ऑनलाइन बहुत लंबे समय के आसपास देखा। कमांड लाइन से mysql प्रॉम्प्ट में टाइप करने की कोशिश करने के बाद, मुझे यह संदेश प्राप्त करना जारी था:

ERROR 2002 (HY000): सॉकेट '/tmp/mysql.sock' (2) के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता

यह इस तथ्य के कारण था कि मेरा स्थानीय mysql सर्वर अब नहीं चल रहा था। सर्वर को पुनरारंभ करने के लिए, मैंने नेविगेट किया

shell> cd /user/local/bin

जहाँ मेरे mysql.server स्थित था। यहाँ से, बस टाइप करें:

shell> mysql.server start

यह स्थानीय mysql सर्वर को फिर से लॉन्च करेगा।

अगर जरूरत हो तो वहां से आप रूट पासवर्ड रीसेट कर सकते हैं।

mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
->                   WHERE User='root';
mysql> FLUSH PRIVILEGES;

2

मुझे पहले सभी प्रक्रिया आईडी ढूंढकर mysql के सभी उदाहरणों को मारना था:

ps aux | grep mysql

और फिर उन्हें मारना:

मार-९ {पिड}

फिर:

mysql.server प्रारंभ

मेरे लिए काम किया।


1

सॉकेट / tmp में स्थित है। यूनिक्स प्रणाली पर, मोड / ओनरशिप पर / tmp के कारण, यह कुछ समस्या पैदा कर सकता है। लेकिन, जब तक आप हमें बताते हैं कि आप सामान्य रूप से अपने mysql संबंध का उपयोग कर सकते हैं, मुझे लगता है कि यह आपके सिस्टम पर कोई समस्या नहीं है। अधिक तटस्थ निर्देशिका में mysql.sock को स्थानांतरित करने के लिए एक मौलिक जांच होनी चाहिए।

तथ्य यह है कि समस्या "बेतरतीब ढंग से" (या हर बार नहीं) होती है मुझे लगता है कि यह एक सर्वर समस्या हो सकती है।

  • क्या आपका / tmp एक मानक डिस्क पर, या एक विदेशी माउंट (RAM में) पर स्थित है?

  • क्या आपका / tmp खाली है?

  • iotopजब आप समस्या का सामना करते हैं तो क्या आप कुछ गलत दिखाते हैं?


0

'DB कनेक्शन प्रबंधित करें संवाद' में अपने DB कनेक्शन को कॉन्फ़िगर करें। कनेक्शन विधि के रूप में 'स्टैंडर्ड (टीसीपी / आईपी)' चुनें।

अधिक जानकारी के लिए इस पेज को देखें http://dev.mysql.com/doc/workbench/en/wb-manage-db-connections.html

इस पृष्ठ के अनुसार यदि आप लोकलहोस्ट निर्दिष्ट करते हैं तो भी एक सॉकेट फ़ाइल का उपयोग किया जाता है।

यदि आप होस्ट नाम निर्दिष्ट नहीं करते हैं या यदि आप विशेष होस्ट नाम लोकलहोस्ट निर्दिष्ट करते हैं तो यूनिक्स सॉकेट फ़ाइल का उपयोग किया जाता है।

यह यह भी दिखाता है कि इन कमांड को चलाकर अपने सर्वर पर कैसे जांच करें:

यदि कोई mysqld प्रक्रिया चल रही है, तो आप निम्न आदेशों को आज़माकर देख सकते हैं। आपके सेटअप में पोर्ट नंबर या यूनिक्स सॉकेट फ़ाइल नाम भिन्न हो सकता है। host_ip उस मशीन के आईपी पते का प्रतिनिधित्व करता है जहां सर्वर चल रहा है।

shell> mysqladmin version 
shell> mysqladmin variables 
shell> mysqladmin -h `hostname` version variables 
shell> mysqladmin -h `hostname` --port=3306 version 
shell> mysqladmin -h host_ip version 
shell> mysqladmin --protocol=SOCKET --socket=/tmp/mysql.sock version

0

ubuntu14.04 में आप इस समस्या को हल करने के लिए ऐसा कर सकते हैं।

zack@zack:~/pycodes/python-scraping/chapter5$ **mysqladmin -p variables|grep socket**
Enter password: 
| socket                                            | ***/var/run/mysqld/mysqld.sock***                                                                                            |
zack@zack:~/pycodes/python-scraping/chapter5$***ln -s  /var/run/mysqld/mysqld.sock /tmp/mysql.sock***
zack@zack:~/pycodes/python-scraping/chapter5$ ll /tmp/mysql.sock 
lrwxrwxrwx 1 zack zack 27 11 29 13:08 /tmp/mysql.sock -> /var/run/mysqld/mysqld.sock=

0

मेरे लिए, मुझे यकीन है कि mysqld शुरू हो गया है, और कमांड लाइन mysql ठीक से काम कर सकती है। लेकिन httpd सर्वर समस्या दिखाता है (सॉकेट के माध्यम से mysql से कनेक्ट नहीं हो सकता है)।

मैंने mysqld_safe & के साथ सेवा शुरू की।

अंत में, मैंने पाया कि जब मैं mysqld सेवा को mysqld start के साथ शुरू करता हूं, तो समस्याएँ (selinux अनुमति समस्या) होती हैं, और जब मैं selinux समस्या को ठीक करता हूं, और "सेवा mysldld प्रारंभ" के साथ mysqld प्रारंभ करता हूं, तो httpd कनेक्शन समस्या गायब हो जाती है। लेकिन जब मैं mysqld_safe के साथ mysqld शुरू करता हूं और, mysqld पर काम किया जा सकता है। (mysql क्लाइंट ठीक से काम कर सकता है)। लेकिन httpd से जुड़ने पर अभी भी समस्या है।


0

यदि यह सॉकेट संबंधित है तो इस फ़ाइल को पढ़ें

/etc/mysql/my.cnf

और देखें कि मानक सॉकेट स्थान क्या है। यह एक लाइन की तरह है:

socket = /var/run/mysqld/mysqld.sock

अब अपने शेल के लिए एक उपनाम बनाएं जैसे:

alias mysql="mysql --socket=/var/run/mysqld/mysqld.sock"

इस तरह आपको रूट विशेषाधिकारों की आवश्यकता नहीं है।


0

बस चलाने की कोशिश करें mysqld

यह वही था जो मेरे लिए मैक पर काम नहीं कर रहा था। यदि यह काम नहीं करता है तो /usr/local/var/mysql/<your_name>.errविस्तृत त्रुटि लॉग देखने के लिए जाएं।


0
# shell script ,ignore the first 
$ $(dirname `which mysql`)\/mysql.server start

सहायक हो सकता है।


सबसे स्टार उत्तर 'sudo /usr/local/mysql/support-files/mysql.server start' के समान है, लेकिन अलग-अलग OS में 'mysql.server'.So' के अलग-अलग पथ हो सकते हैं, जिन्होंने एक कमांड लाइन लिखने की कोशिश की है, जो हो सकता है कई OS में उपयोगी हो।

0

MySQL 8.0.19 के लिए MacOS Mojave 10.14.6 का उपयोग करके Homebrew द्वारा स्थापित किया गया

  • दौड़ा sudo find / -name my.cnf
  • पर फाइल मिली /usr/local/etc/my.cnf

एक समय के लिए काम किया और फिर त्रुटि वापस आ गई। MySQL के Homebrew संस्करण को अनइंस्टॉल किया और सीधे .dmg फ़ाइल से स्थापित किया यहां

तब से खुशी से जुड़ रहे हैं।


0

मेरे मामले में फ़ाइल को संपादित करने /etc/mysql/mysql.conf.d/mysqld.cnfऔर लाइन को बदलने में क्या मदद मिली :

socket      = /var/run/mysqld/mysqld.sock

साथ में

socket      = /tmp/mysql.sock

फिर मैंने सर्वर को फिर से शुरू किया और यह ठीक काम किया। मज़ेदार बात यह है कि अगर मैं लाइन को वापस रखता जैसा कि पहले था और फिर से शुरू हुआ यह अभी भी काम कर रहा है।


0

मुझे हाल ही में इसी तरह की समस्या का सामना करना पड़ा था। कई उत्तरों के माध्यम से चला गया। मैंने इसे चरणों का पालन करके काम किया।

  1. /etc/my.cnf में सॉकेट पथ को बदलें (जैसा कि मुझे बार-बार /tmp/mysql.sock के साथ त्रुटि हो रही थी) सॉकेट पथ को बदलने के लिए संदर्भ
  2. सर्वर को पुनरारंभ करने के लिए mysqld_safe चलाएं क्योंकि यह त्रुटियों के मामले में पुनरारंभ करने के लिए अनुशंसित तरीका है। mysqld_safe का संदर्भ

0

मेरे लिए, mysql सर्वर नहीं चल रहा था। तो, मैं के माध्यम से mysql सर्वर शुरू किया

mysql.server start

फिर

mysql_secure_installation

सर्वर को सुरक्षित करने के लिए और अब मैं MySQL सर्वर पर जा सकता हूं

sudo mysql -uroot -p

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.