2002 के ERROR के कारण mysqld प्रक्रिया डुप्लिकेट करें: सॉकेट '/tmp/mysql.sock' के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता


0

मैं macOS 10.12 पर हूं और परिचित हूं ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'। लेकिन मुझे नहीं लगता कि यह सामान्य अपराधियों में से एक है।

सॉकेट फ़ाइल /tmp/mysql.sockअनुपलब्ध है, लेकिन mysqldचल रही है। वास्तव में दो mysqldप्रक्रियाएं लगती हैं:

$ ps -axx | grep mysqld
  63 ??         0:00.02 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql
 109 ??         0:00.27 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid
 267 ??         0:00.20 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/localhost.err --pid-file=/usr/local/mysql/data/Jonathans-iMac.pid

मुझे लगता है कि मैंने कुछ समय पहले mysql के कुछ संस्करणों को इंस्टॉल और अनइंस्टॉल किया था। तो शायद एक पुराना उदाहरण घूम रहा है, रास्ते में मिल रहा है?

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

कभी-कभी पूरे सिस्टम को रिबूट करने से जादुई चीजें काम करने लगती हैं। अभी भी दो mysqldप्रक्रियाएं हैं, लेकिन कम से कम /tmp/mysql.sockबनाई गई हैं और मैं अपने डेटाबेस को सामान्य रूप से एक्सेस कर सकता हूं। दूसरी बार, रिबूट करने से मदद नहीं मिलती है।

मैंने एक अतिरिक्त .plistफ़ाइल की तलाश की है जो अतिरिक्त mysqldप्रक्रिया के लिए जिम्मेदार हो सकती है, लेकिन कोई भाग्य नहीं:

$ locate plist | grep mysql
/Library/LaunchDaemons/com.mysql.mysql.plist
/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
/private/var/db/receipts/com.mysql.launchd.plist
/private/var/db/receipts/com.mysql.mysql.plist
/private/var/db/receipts/com.mysql.prefpane.plist

यहां /Library/LaunchDaemons/com.mysql.mysql.plist की सामग्रियां दी गई हैं:

<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0">
  <dict>
<key>KeepAlive</key>
<true />
<key>Label</key>
<string>com.mysql.mysqld</string>
<key>ProgramArguments</key>
<array>
  <string>/usr/local/mysql/bin/mysqld_safe</string>
  <string>--user=mysql</string>
</array>

और /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>         
<string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--user=_mysql</string>
            <string>--basedir=/usr/local/mysql</string>
            <string>--datadir=/usr/local/mysql/data</string>
            <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
            <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>

किसी भी विचार को समस्या के स्रोत को कैसे पहचाना और ठीक किया जाए?


1
मुझे लगता है कि /Library/LaunchDaemons/com.mysql.mysql.plist को हटा दिया जाना चाहिए, लेकिन मैं इन दिनों OSX पर 100% नहीं हूं और वैसे भी परीक्षण करने का कोई तरीका नहीं है।
djsmiley2k

मैं इसे एक समाधान के रूप में पोस्ट करूँगा, अगर आप इसे स्वीकार नहीं करेंगे।
djsmiley2k

जवाबों:


1

जैसा कि आपने स्वयं नोट किया है, ऐसा लगता है कि mysqld को दो बार शुरू किया जा रहा है। यह कुछ बिंदु पर लगता है कि आपने इंस्टॉलर के दो अलग-अलग संस्करण चलाए हैं, जो अलग-अलग स्थानों में स्थापित किए गए हैं, और एक दूसरे पर नहीं उठाए गए हैं।

एक या दूसरे को हटा रहा है

$ locate plist | grep mysql 
/Library/LaunchDaemons/com.mysql.mysql.plist 
/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

अपनी समस्या को हल करना चाहिए।

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