Bash स्क्रिप्ट Mysql चेतावनी: कमांड लाइन इंटरफ़ेस पर पासवर्ड का उपयोग करना असुरक्षित हो सकता है




linux passwords (2)

इसके चारों ओर जाने का एक तरीका यह है कि आपके ~/.my.cnf फ़ाइल में उचित चर सेट करें। इस के समान कुछ मदद करनी चाहिए:

[mysql]                                                                                                                                                   
user=my_username                                                                                                                                          
password=my_password

यह कमांड चलाने वाले उपयोगकर्ता की होम डायरेक्टरी में रहना चाहिए। और अन्य उपयोगकर्ताओं द्वारा इसे पढ़ने योग्य होने से बचने के लिए फ़ाइल पर सही अनुमतियां सेट करना न भूलें: chmod 600 ~/.my.cnf

नमस्ते मुझे कुछ mysql डेटाबेस विभाजन करने के लिए एक स्क्रिप्ट है हम 5.5 से 5.6 तक उन्नयन कर रहे हैं। स्क्रिप्ट का परीक्षण करते हुए मैंने देखा कि नई 5.6 संस्करण mysql रिटर्न के साथ Warning: Using a password on the command line interface can be insecure. इसे ठीक करने का सबसे अच्छा तरीका क्या है? मैंने पढ़ा है एक workaround 2>/dev/null लेकिन मैं बाहर निकलने कोड या किसी भी त्रुटि अगर वे हो पाने के लिए सक्षम नहीं होगा। ऐसा करने के लिए कोई और रास्ता नहीं है। यहां कोड की समस्याग्रस्त रेखा है:

MYSQL_RESULT=`echo "SET sql_log_bin=0;SET @pdb='$DB',@ptable='$table';CALL maintenance(@pdb,@ptable);SET sql_log_bin=1;"|mysql -uUSER -pPASSWORD database`

यदि आप MySQL / 5.6.6 या इससे अधिक का उपयोग कर रहे हैं तो आप mysql_config_editor नामक एक बंडल उपकरण का उपयोग कर सकते हैं:

mysql_config_editor उपयोगिता [...] आपको नामित एन्क्रिप्ट किए गए लॉगिन पथ फ़ाइल में प्रमाणीकरण क्रेडेंशियल्स को संग्रहीत करने में सक्षम बनाता है .mylogin.cnf फ़ाइल स्थान %APPDATA%\MySQL Windows पर %APPDATA%\MySQL निर्देशिका और गैर-विंडोज सिस्टम पर वर्तमान उपयोगकर्ता की होम निर्देशिका है MySQL सर्वर से कनेक्ट करने के लिए प्रमाणीकरण क्रेडेंशियल्स प्राप्त करने के लिए फ़ाइल बाद में MySQL क्लाइंट प्रोग्राम द्वारा पढ़ा जा सकता है।

ऐसे उपकरण के साथ, आप नामांकित क्रेडेंशियल ("लॉगिन पथ") की एक संख्या प्रदान कर सकते हैं:

$ mysql_config_editor set --login-path=backup-user --host=localhost --user=backup --password
Enter password:
$ mysql_config_editor print --all
[backup-user]
user = backup
password = *****
host = localhost

... जो बाद में उन क्लाइंट द्वारा उपयोग किए जा सकते हैं जो फीचर का समर्थन करते हैं (जैसे कि आधिकारिक कमांड लाइन क्लाइंट या माइस्केडम्प):

$ mysql --login-path=backup-user
Welcome to the MySQL monitor.  Commands end with ; or \g.

बेशक, 5.6.6+ होने का मुख्य कारण «चेतावनी: कमांड लाइन अंतरफलक पर पासवर्ड का उपयोग करना असुरक्षित हो सकता है» पहले स्थान पर ;-)





passwords