आपको -p
. का उपयोग करने की आवश्यकता है एक पासवर्ड भेजने के लिए ध्वज। और यह मुश्किल है क्योंकि आपके पास -p
. के बीच कोई स्थान नहीं होना चाहिए और पासवर्ड।
$ mysql -h "server-name" -u "root" "-pXXXXXXXX" "database-name" < "filename.sql"
यदि आप -p
. के बाद किसी स्थान का उपयोग करते हैं यह mysql क्लाइंट को आपको पासवर्ड के लिए अंतःक्रियात्मक रूप से संकेत देता है, और फिर यह अगले कमांड तर्क को डेटाबेस-नाम के रूप में व्याख्या करता है:
$ mysql -h "server-name" -u "root" -p "XXXXXXXX" "database-name" < "filename.sql"
Enter password: <you type it in here>
ERROR 1049 (42000): Unknown database 'XXXXXXXX'
वास्तव में, मैं उपयोगकर्ता और पासवर्ड को ~/.my.cnf में संग्रहीत करना पसंद करता हूं, इसलिए मुझे इसे कमांड-लाइन पर बिल्कुल भी डालने की आवश्यकता नहीं है:
[client]
user = root
password = XXXXXXXX
फिर:
$ mysql -h "server-name" "database-name" < "filename.sql"
अपनी टिप्पणी दें:
मैं बैच-मोड mysql कमांड को उपरोक्त की तरह कमांड लाइन पर और शेल स्क्रिप्ट में हर समय चलाता हूं। आपकी शेल स्क्रिप्ट में क्या गलत है इसका निदान करना कठिन है, क्योंकि आपने सटीक स्क्रिप्ट या कोई त्रुटि आउटपुट साझा नहीं किया है। मेरा सुझाव है कि आप ऊपर अपना मूल प्रश्न संपादित करें और जो गलत हुआ उसके उदाहरण प्रदान करें।
साथ ही जब मैं शेल स्क्रिप्ट का समस्या निवारण कर रहा होता हूं तो मैं -x
. का उपयोग करता हूं ध्वज ताकि मैं देख सकूं कि यह प्रत्येक आदेश को कैसे क्रियान्वित कर रहा है:
$ bash -x myscript.sh