2013-03-15 4 views
9

"सॉकेट के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं कर सकता है" जब मैंmysql_secure_installation

[[email protected] bin]$ ./mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL 
     SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! 


In order to log into MySQL to secure it, we'll need the current 
password for the root user. If you've just installed MySQL, and 
you haven't set the root password yet, the password will be blank, 
so you should just press enter here. 

Enter current password for root (enter for none): 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 
Enter current password for root (enter for none): 

की तरह फ़ाइल mysql_secure_installation मैं त्रुटि हो रही है लागू कर रहा हूँ लेकिन my.cnf फ़ाइल में दिए गए जुर्राब फ़ाइल/घर/mysqk123 है /tmp/mysql.sock और मैं rehhat linux 5.3 और mysql 5.1.47

मुझे पता है कि mysql_secure_installation स्क्रिप्ट द्वारा किए गए कार्यों को मैन्युअल रूप से निष्पादित किया जा सकता है लेकिन यहां मुझे स्क्रिप्ट चलाने की आवश्यकता है [कार्य करने की अनुमति नहीं है मैन्युअल रूप से]

कोई भी सुझाव समस्या को हल करने रों मुझे

उत्तर

14

के लिए बहुत उपयोगी के बाद से इस उपयोगिता एक मानक स्थापना से अधिक इस्तेमाल किया जा करने के लिए है रहे हैं, और क्योंकि यह कोई पैरामीटर स्वीकार करने के लिए लगता है, मैं बहुत कुछ विकल्प देखें:

  • अस्थायी रूप से कॉन्फ़िगर प्रक्रिया के समय के लिए डिफ़ॉल्ट सॉकेट स्थान का उपयोग करने के लिए MySQL (वैकल्पिक रूप से, डिफ़ॉल्ट स्थान से आपके कस्टम स्थान पर एक प्रतीकात्मक लिंक बस काम कर सकता है)।
  • स्क्रिप्ट mysql_secure_installation को संशोधित करें ताकि यह आपके कस्टम स्थान का उपयोग कर सके। अगर मैं इसे सही ढंग से समझता हूं, तो स्क्रिप्ट make_config सबराउटिन में लाइन 46 के आसपास ./.my.cnf.$$ ($$ पिड है) के रूप में एक अस्थायी कॉन्फ़िगरेशन फ़ाइल बनाता है।

संशोधित इस प्रकार है: (अस्वीकरण: परीक्षण नहीं किया :)

make_config() { 
    echo "# mysql_secure_installation config file" >$config 
    echo "[mysql]" >>$config 
    echo "user=root" >>$config 
    echo "password='$rootpass'" >>$config 
    # add the line below 
    echo "socket=/home/mysqk123/tmp/mysql.sock" >>$config 
} 

फिर, यह स्क्रिप्ट एक मानक पर इस्तेमाल किया जा करने के लिए है, बाहर के बॉक्स स्थापना। अपने बॉस (या अपने क्लाइंट) को बताएं कि यदि आप गैर-मानक सॉकेट स्थान का उपयोग करने के लिए MySQL को कॉन्फ़िगर करने में सक्षम थे, तो आप खातों को हटाने और पासवर्ड सेट करने जैसे हाथों के सरल आदेशों से भी भाग सकते हैं।

+0

धन्यवाद अपनी कार्यशील – vidyadhar

+0

आप प्रतिभा :) –

+0

हैं MySQL 5.7.2 के रूप में, 'mysql_secure_installation.sh' एक द्विआधारी से बदल दिया जाएगा कि विशेष रूप से ['--socket = path'] (http://dev.mysql.com/doc/refman/5.7/en/mysql-secure-installation.html) कमांड लाइन पर विकल्पों को स्वीकार करता है।मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन जब मैं इसके बारे में और जानूं तो मैं जवाब अपडेट कर दूंगा। – RandomSeed

4

तुम भी सॉकेट फाइल करने के लिए एक सिमलिंक कर सकते हैं और फिर इसे हटा दें:

ln -s /home/mysqk123/tmp/mysql.sock /var/lib/mysql/mysql.sock 
mysql_secure_installation # Do your stuff 
rm -rf /var/lib/mysql/mysql.sock 
1

मैं इस एक ही त्रुटि हो किया था, और यह पता चला है मैं MySQL सेवा बंद कर दिया था और उसे पुन: प्रारंभ करने के लिए भूल गया। तो अगर आप की तरह एक आदेश का उपयोग कर mysql सेवा की स्थिति की जाँच कर सकते हैं:

mysqladmin -u root -p status

आपको कोई त्रुटि मिलती है, इसका मतलब MySQL नहीं चल रहा है, और आप MySQL सेवा शुरू कर सकते हैं।

/etc/init.d/mysql start 
service mysql start 

mysqld साथ mysqld बदलें आपके सिस्टम अगर: या, यदि आप चाहें, तो आप बेतहाशा पहले अपनी स्थिति की जांच कर (जो यदि वह पहले से चल रहा है काम नहीं करेगा) इन आदेशों में से एक का उपयोग किए बिना सेवा शुरू करने के लिए प्रयास कर सकते हैं MySQL के उस संस्करण का उपयोग कर रहा है।

2

वाकई, mysql या MariaDB शुरू उदाहरण के लिए बनाओ:

sudo systemctl start mariadb.service 
sudo systemctl enable mariadb.service