Mysqld.sock में क्या होना चाहिए, मेरे पास क्यों नहीं है?


22

क्या किसी को पता है कि /var/run/mysqld/mysqld.sockMySQL 5.1 को इंस्टॉल करने (या फिर से इंस्टॉल) करने पर मेरी सॉकेट फ़ाइल मेरे कंप्यूटर पर क्यों नहीं होगी?

अभी, जब मैं mysqld के साथ एक सर्वर शुरू करने की कोशिश करता हूं, तो मुझे त्रुटियां मिलती हैं Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect, लेकिन उस नाम के साथ एक रिक्त फ़ाइल बनाना (जैसा कि ubuntu मंचों पर सुझाया गया है) असफल था।

मेरे पास दोनों mysql थे और जब तक मैं थोड़ी देर पहले नैट्टी में अपग्रेड नहीं हो जाता, तब तक ठीक-ठाक पोस्ट करता रहा; मैंने दोनों डेटाबेसों के माध्यम से चलने में घंटों बिताए हैं जो यह पता लगाने की कोशिश कर रहे हैं कि क्या चल रहा है। मैं पोस्टग्रेज पर छोड़ सकता हूं, लेकिन मैं mysql की वर्किंग कॉपी के बिना काम नहीं कर सकता।

सबसे अजीब हिस्सा: मैं कुबंटु का उपयोग करता हूं, और मेरी समझ यह है कि केडीई उपयोगकर्ता की अनुमतियों को संग्रहीत करने के लिए mysql का उपयोग करता है, आदि मैं किसी भी अजीब अनुमतियों के मुद्दों का अनुभव नहीं कर रहा हूं; क्या इसका मतलब यह हो सकता है कि (किसी तरह?) MySQL वास्तव में काम कर रहा है?

हो सकता है कि ये सॉकेट फाइलें नैट्टी में अलग जगह पर रहती हैं? क्या ओएस को नए सिरे से स्थापित करना आसान होगा? इस बिंदु पर, मैं किसी भी सुझाव के लिए खुला हूं जो मेरा समय बर्बाद करना बंद कर देगा।


आपको पहले mysql सर्वर शुरू करने की आवश्यकता है और फिर वह फ़ाइल /var/run/mysqld/mysqld.sockबनाई जाएगी। जैसा कि @Paul ने कहा, आपको उस स्थान पर रखी गई किसी भी फ़ाइल को निकालना होगा।
इवान हू

जवाबों:


18

सॉकेट फ़ाइल में वास्तव में डेटा नहीं होता है, यह इसे ट्रांसपोर्ट करता है .. यह एक विशेष, असामान्य प्रकार की फाइल है जिसे विशेष सिस्टम कॉल / कमांड के साथ बनाया गया है। यह कोई साधारण फाइल नहीं है।

यह एक पाइप की तरह है जो सर्वर और क्लाइंट अनुरोधों और डेटा को जोड़ने और एक्सचेंज करने के लिए उपयोग कर सकते हैं। इसके अलावा, यह केवल स्थानीय रूप से उपयोग किया जाता है। इसका महत्व केवल फाइलसिस्टम में एक सहमति योग्य स्थान के रूप में है।

एक सादी पुरानी फ़ाइल बनाना और उसे उस स्थान पर रखना वास्तव में इसे बनाने वाले सर्वर के साथ हस्तक्षेप कर सकता है ... और इस तरह स्थानीय क्लाइंट को सर्वर से कनेक्ट करने से रोकता है।

मेरी सिफारिश है कि आप किसी भी फाइल को लोकेशन में हटा दें। विशेष सॉकेट फ़ाइल सर्वर द्वारा बनाई गई है।


1
सॉकेट फ़ाइलों की व्याख्या के लिए धन्यवाद, और खराब-शब्द वाले प्रश्न के बारे में क्षमा करें: मेरा मूल मुद्दा यह था कि सॉकेट फ़ाइल गायब थी - त्रुटि mysql Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
फेंकती रही

लेकिन यह कैसे बनाया जाता है? क्योंकि मैं अभी भी नहीं है ..: -s किसी भी विचार?
jpganz18

आपके पास संभवतः एक mysql क्लाइंट है जो सॉकेट को उस स्थान पर होने की उम्मीद करता है, लेकिन सर्वर इसे वहां नहीं बनाता है (या सर्वर नहीं चल रहा है) यदि सर्वर चल रहा है, तो / tmp में देखें या ढूंढें या खोजें का उपयोग करें सॉकेट फ़ाइल ढूंढें, फिर mysql क्लाइंट को -S <सॉकेट फ़ाइल> पथ से शुरू करें
sed_and_done

20

जब आप निर्दिष्ट करते हैं host=localhost, तो mysql क्लाइंट unix नाम के पाइप का उपयोग करके mysql सर्वर में प्रवेश करने का प्रयास करेगा, जिसके लिए एक .sockफ़ाइल की आवश्यकता होती है ।

यह होस्ट = 127.0.0.1 को निर्दिष्ट करके बाईपास किया जा सकता है। यह mysql क्लाइंट को सर्वर से कनेक्ट करने के लिए टीसीपी का उपयोग करेगा।

MySQL के दस्तावेज से लिया गया :

mysql --host=127.0.0.1 --port=3306 --user=your_uname --password=your_pass

यह वास्तव में एक शानदार (और बहुत आवश्यक) उत्तर है क्योंकि, ऐतिहासिक रूप से, मैंने mysql.sockMySQL के हर संस्करण में बिना किसी अच्छे कारण के गायब हो जाने को देखा है, जिसके साथ मैंने काम किया है (वापस 4.0)। जब ऐसा होता है, तो मैं इस तरह लॉगिन करता हूं, लेकिन मैं --protocol=tcpइसके बजाय उपयोग करता हूं --port। जब आप mysql को बंद करते हैं, तो सेवा सॉकेट फ़ाइल के लिए दिखती है। इस प्रकार, रनिंग service mysql stopविफल हो जाएगी। गायब सॉकेट फ़ाइल सिरदर्द के आसपास जाने के लिए, मैं दौड़ता हूं mysqladmin -h127.0.0.1 --protocol=tcp -uroot -p shutdown। ओह, BTW, +1 !!!
रोलैंडमाइसीडीडीबीए

धन्यवाद। यह मेरा पहला जवाब था कहीं भी ऑनलाइन :) और हाँ। टीसीपी का उपयोग करने की वैकल्पिक विधि --protocol = tcp निर्दिष्ट करके है।
sccott

14

सॉकेट एक विशेष छद्म फ़ाइल है, जिसका उपयोग डेटा संग्रहण को पढ़ने और लिखने के लिए किया जाता है, न कि डेटा संग्रहण के लिए।

सॉकेट फ़ाइल तब बनाई जाती है जब सेवा समाप्त हो जाती है और सेवा समाप्त होने पर हटा दी जाती है। फ़ाइल का स्थान इस प्रकार परिभाषित किया गया /etc/my.cnfहै:

[mysqld]
socket=/var/run/mysql/mysql.sock

8

मेरे मामले में, रनिंग mysqld_safeने एक नई mysqld.sockफ़ाइल बनाई ।

$ cd /etc/init.d/
$ mysqld_safe

आपको शायद तुरंत वापस नहीं मिलेगा, लेकिन यदि आप अपना सत्र फिर से शुरू करते हैं, तो एक mysqld.sock फ़ाइल कहीं होगी। इसके साथ खोजें

$ sudo find / -type s | grep mysqld.sock

2

मैं लापता mysqld.sock के साथ एक ही समस्या थी। मैं उस निर्देशिका में गया जिसमें mysql सम्‍मिलित था, अर्थात् /usr/binमेरे मामले में। तब मैंने आज्ञा जारी की

mysql mysql --host=localhost --password=whatever --port=3306

डबल mysql एक टाइपो नहीं है, बल्कि mysql एक डेटाबेस है जो हमेशा एक नए MySQL इंस्टॉलेशन में रहेगा। मैं नहीं जानता कि क्या --host, --passwordया --portजरूरत है, लेकिन जब से यह मेरे लिए काम किया इन मापदंडों का उपयोग कर मैं उन्हें शामिल कर रहा हूँ। MySQL के आने के बाद मैं रूट के लिए पासवर्ड सेट करते हुए उपयोगकर्ता तालिका में गया। एक बार MySQL के आने के बाद गुम सॉकेट फ़ाइल बनाई गई थी। मुझे आशा है कि यह किसी को मदद करता है जब से मैं दिनों के लिए संघर्ष किया।


1

यदि आप nginx php-fastcgi का उपयोग कर रहे हैं और आपको 502 खराब गेटवे त्रुटि मिली है तो आपको nginx config फ़ाइल पर अपने वर्चुअल होस्ट कॉन्फ़िगरेशन को देखना होगा। आपको fastcgi_passपैरामीटर सेट या सही करना होगा fastcgi_pass। nginx और php CGI के बीच सॉकेट कनेक्शन सेट करने के लिए चर है।

समस्या का एक और बिंदु यह है कि बाइनरी स्टार्टर स्क्रिप्ट निम्नलिखित प्रविष्टियों (महत्वपूर्ण) को खोलने से चूक सकती है: nano /usr/bin/php-fastcgi

SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid

मेरी स्टार्टर स्क्रिप्ट / usr / bin / php-fastcgi की संपूर्ण सामग्री:

#!/bin/bash

FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi

/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.