चूंकि मैंने इसे हल करने के लिए काफी समय बिताया है और हमेशा इस पृष्ठ पर वापस आता हूं, जब इस त्रुटि की तलाश में, मैं अपना समाधान यहां छोड़ दूंगा कि मैं किसी को खोए हुए समय को बचाता हूं। हालांकि मेरे मामले में मैं MySql के बजाय mariadb का उपयोग कर रहा हूं, फिर भी आप अपनी आवश्यकताओं के लिए इस समाधान को अनुकूलित करने में सक्षम हो सकते हैं।
मेरी समस्या
एक ही है, लेकिन मेरा सेटअप थोड़ा अलग है (mysql के बजाय mariadb):
होमब्रे के साथ मारीडब स्थापित
$ brew install mariadb
डेमॉन शुरू किया
$ brew services start mariadb
कनेक्ट करने की कोशिश की और उपर्युक्त त्रुटि मिली
$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
मेरा समाधान
पता करें कि कौन सी my.cnf
फ़ाइलों का उपयोग किया जाता है mysql
(जैसा कि इस टिप्पणी में सुझाया गया है ):
$ mysql --verbose --help | grep my.cnf
/usr/local/etc/my.cnf ~/.my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
जाँच करें कि यूनिक्स सॉकेट फ़ाइल कहाँ चल रही है (लगभग यहाँ वर्णित है ):
$ netstat -ln | grep mariadb
.... /usr/local/mariadb/data/mariadb.sock
(आप grep mysql
मारीदब के बजाय चाहते हो सकते हैं )
आपके द्वारा पाई गई सॉकेट फ़ाइल जोड़ें ~/.my.cnf
(यदि आवश्यक हो तो फ़ाइल बनाएं) ( ऊपर से -command ~/.my.cnf
चलाते समय सूचीबद्ध किया गया था mysql --verbose ...
):
[client]
socket = /usr/local/mariadb/data/mariadb.sock
अपने मरदब को फिर से शुरू करें:
$ brew services restart mariadb
इसके बाद मैं mysql चला सका और मिला:
$ mysql -uroot
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
इसलिए मैं सुपरसुअर विशेषाधिकारों के बजाय कमांड चलाता हूं और अपना पासवर्ड दर्ज करने के बाद मुझे मिला:
$ sudo mysql -uroot
MariaDB [(none)]>
टिप्पणियाँ:
मैं उन समूहों के बारे में निश्चित नहीं हूं जहां आपको सॉकेट जोड़ना है, पहले मेरे पास यह था [क्लाइंट-सर्वर] लेकिन फिर मुझे लगा कि [क्लाइंट] पर्याप्त होना चाहिए। इसलिए मैंने इसे बदल दिया और यह अभी भी काम करता है।
दौड़ते समय mariadb_config | grep socket
मुझे लगता है:
--socket [/tmp/mysql.sock]
जो थोड़ा भ्रमित करने वाला है क्योंकि ऐसा लगता है कि /usr/local/mariadb/data/mariadb.sock
यह वास्तविक स्थान है (कम से कम मेरी मशीन पर)
मुझे आश्चर्य है कि मैं /usr/local/mariadb/data/mariadb.sock
वास्तव में /tmp/mysql.sock
ऐसा करने के लिए कॉन्फ़िगर कर सकता हूं इसलिए मैं अपना संपादन करने के बजाय डिफ़ॉल्ट सेटिंग्स का उपयोग कर सकता हूं .my.cnf
(लेकिन मुझे लगता है कि अब यह पता लगाने के लिए बहुत थक गया हूं ...)
कुछ बिंदु पर मैंने इसके साथ आने से पहले अन्य उत्तरों में उल्लिखित बातें भी कीं।