कैसे बचेंगे! पासवर्ड में?


24

पासवर्ड में विस्मयादिबोधक बिंदु से कोई कैसे बच सकता है:

$ mysql -umyuser -pone_@&!two
-bash: !two: event not found

स्पष्ट बैकलैश की कोशिश करने से मदद नहीं मिली:

$ mysql -umyuser -pone_@&\!two
[1] 22242
-bash: !two: command not found
name@domain.com [~]# ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)

मेरी सभी Google खोजों का सुझाव है कि बैकस्लैश मदद करेगा, लेकिन ऐसा नहीं है। इस प्रश्न में सुझाए गए उद्धरणों का उपयोग करने का कोई तरीका नहीं है । लाइन को एक .bashrc उपनाम में उपयोग किया जाएगा। चिंता न करें, यहां दिखाए गए उपयोगकर्ता नाम और पासवर्ड केवल उदाहरण हैं और उत्पादन में उपयोग नहीं किए जाते हैं!


आप हमेशा सिंगल कोट्स का उपयोग कर सकते हैं। एक एकल-उद्धरण "अंदर" एक एकल-उद्धृत स्ट्रिंग का उपयोग करने के लिए, प्रयास करें:''\'
cas

6
BTW, पासवर्ड को कमांड लाइन पर रखना एक बहु-उपयोगकर्ता प्रणाली पर एक संभावित सुरक्षा जोखिम है। किसी भी चालू प्रक्रिया के कमांड-लाइन आर्ग की जांच करना बहुत आसान है। इसके बजाय .my.cnf फ़ाइल का उपयोग करें ( chmod 600इसे याद रखें )।
कैस

उफ़। कि के '\'', नहीं''\'
कैस

धन्यवाद, क्रेग। वास्तव में, यह विकल्प की तुलना में अधिक सुरक्षित है: हर किसी को पासवर्ड की एक प्रति ईमेल करना जो तब स्टोर करेगा जिसे पता है कि कहां है। मैं व्यक्तिगत रूप से पसंद करूंगा कि प्रत्येक देव का अपना /home/userऔर mysql उपयोगकर्ता हो, लेकिन मैं इस संबंध में निर्णय लेने वाला नहीं हूं।
डॉटनकोहेन

2
प्रबंधन बुद्धिमान है और सभी जानते हैं :)
cas

जवाबों:


38

पासवर्ड के चारों ओर इस तरह एकल उद्धरण का उपयोग करें: -p'one_@&!two'

इसे एक उपनाम में रखने के लिए, आप कुछ ऐसा करेंगे:

alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''


1
-p और पासवर्ड के बीच कोई स्थान नहीं है, लेकिन हां, यह काम करना चाहिए
mulaz

पहले से ही अंतरिक्ष :) संपादित
cas

4
-bash: !two: command not found

आपको &चरित्र से बचने की भी आवश्यकता है :

$ mysql -umyuser -pone_@\&\!two

3

यदि आप कभी उपयोग नहीं करते हैं! इतिहास की विशेषताएँ, उन्हें केवल set +Hअपने बशर्ते में ( अपने बैशके साथ) निष्क्रिय करना अधिक सुविधाजनक हो सकता है ।


1

आप पासवर्ड को बैश वैरिएबल में स्टोर कर सकते हैं:

$ pass='one_@&!two'

फिर कमांड में वैरिएबल का विकल्प दें:

$ mysql -umyuser -p$pass

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