मैं MySQL क्लाइंट को mylogin.cnf से पासवर्ड कैसे पढ़ सकता हूं?


11

मैं पासवर्ड को इंटरएक्टिव रूप से दिए जाने की आवश्यकता के बिना mysql क्लाइंट को mysql सर्वर से कनेक्ट करने का प्रयास कर रहा हूं। उठाए गए कदम:

1) सबसे पहले mylogin.cnf फाइल बनाएं

$ mysql_config_editor set --user=<user> --password --host=<host>
Enter password:

2) फ़ाइल सफलतापूर्वक बनाई गई:

$ ls -la .mylogin.cnf
-rw-------. 1 urmt urmt  136 Dec 19 11:01 .mylogin.cnf
$ mysql_config_editor print --all
[client]
user = <user>
password = *****
host = <host>

3) mysql क्लाइंट का उपयोग करके कनेक्ट करें

$ mysql <dbname>
ERROR 1045 (28000): Access denied for user '<user>'@'<host>' (using password: NO)

क्या कहीं डिफ़ॉल्ट मान / कॉन्फ़िगरेशन है जो क्लाइंट को mylogin.cnf में पासवर्ड को अनदेखा करता है? उपयोगकर्ता और होस्ट गुण फ़ाइल से सही तरीके से पढ़े गए थे।

यदि मैं कमांड लाइन पर पासवर्ड प्रदान करता हूं तो मैं ठीक से कनेक्ट करने में सक्षम हूं:

$ mysql -p <dbname>
Enter password: 
Reading table information...
...
mysql> 

MySQL क्लाइंट संस्करण 5.6.22 है, MySQL सर्वर संस्करण 5.6.22 है, दोनों ओरेकल लिनक्स 6 पर हैं। क्लाइंट और सर्वर विभिन्न होस्ट पर हैं।

धन्यवाद

जवाबों:


2

किसी भी तरह से आप ऐसा करते हैं, आप शायद एक पासवर्ड को बचाने के लिए जा रहे हैं। यहां तक ​​कि MySQL 5.6 लॉगिन-पथ प्रेरणा के साथ किसी के द्वारा आसानी से डिक्रिप्टेबल है। उस चेतावनी में कहा गया है, यह एक आसान समाधान होगा।

अपने वातावरण स्क्रिप्ट में (जैसे ~/.profileया ~/.bashrc), सेट

alias mysql='mysql -uUser -pPasswd -hHostname'

(निश्चित रूप से अपने इच्छित उपयोगकर्ता, पासवार्ड और होस्टनाम में डालना।)

शेल रीलोगिन के बाद, आपको बस करने में सक्षम होना चाहिए

mysql

... जो आपके उपनाम का उपयोग करेगा और डीबी से जुड़ जाएगा और .my.cnfफाइलों में किसी भी पासवर्ड को अनदेखा करेगा ।

सुरक्षा नोट: यदि आपके सर्वर पर अन्य उपयोगकर्ता हैं, तो आप अपनी प्रोफ़ाइल स्क्रिप्ट को 700०० पर चोदना चाह सकते हैं ताकि पासवर्ड दूसरों के लिए आसानी से उपलब्ध न हो। रूट या sudo वाला कोई भी व्यवस्थापक इसे अभी भी देख सकेगा; उसके आसपास कोई रास्ता नहीं।


यह वास्तविक समस्या के लिए एक काम है, लेकिन मैं यह ठीक हूं। मैं इस उत्तर को भविष्य के पाठकों के लिए अस्वीकरण के साथ स्वीकार करता हूं कि इसे करने का उचित तरीका नवाज का उत्तर है, लेकिन यह अज्ञात कारण से मेरे पर्यावरण पर काम नहीं करता है। धन्यवाद!
लेथिस कोट्सोलोकास

1
-1 यह न तो ओपी की क्वेरी का जवाब देता है और न ही किसी फाइल में पासवर्ड स्टोर करने से बचता है। पासवर्ड अब .mylogin.cnf के बजाय .profile में संग्रहीत है। लेकिन अब ps कमांड द्वारा पासवर्ड प्रदर्शित किया जाता है।
चमत्कार 173

@ मिरेकल, कृपया अपने दावे को मान्य करें कि ps पासवर्ड को प्रकट करेगा। मेरे सिस्टम पर, पासवर्ड ps आउटपुट में xxxxxxx के रूप में नकाबपोश दिखाता है। यदि आपका MySQL क्लाइंट मेरा जैसा काम नहीं कर रहा है, तो कृपया पोस्ट करें जो mysql संस्करण और डिस्ट्रो आप चला रहे हैं। और क्या आपके पास ओपी के वास्तविक प्रश्न का बेहतर उत्तर है?
जोशुआ ह्यूबर

2
@joshua: पासवर्ड सुरक्षा के लिए अंतिम-उपयोगकर्ता दिशानिर्देश : "का प्रयोग करें एक -pyour_passया --password=your_passकमांड लाइन पर विकल्प (...) यह सुविधाजनक है, लेकिन असुरक्षित ।"
चमत्कार 173

10

पहले लॉगिन पथ सेट करने के लिए निम्नलिखित कमांड का उपयोग करें

mysql_config_editor set --login-path = lgpath --user = root -p
पासवर्ड

और फिर mysql को लॉगिन करने के लिए कमांड का उपयोग करें

mysql --login-path = lgpath

Mysql लॉगिन पथ विकल्पों के बारे में सहायता से देखा जा सकता है

mysql_config_editor set --help


जैसा कि आपने सुझाव दिया है, मैंने स्पष्ट रूप से एक लॉगिन पथ सेट करने की कोशिश की, लेकिन दुर्भाग्य से इसमें समान व्यवहार है: $ mysql_config_editor प्रिंट --all [lgpath] उपयोगकर्ता = <उपयोगकर्ता> पासवर्ड = ***** होस्ट = <होस्ट> $ ssql --login -path = lgpath ERROR 1045 (28000): उपयोगकर्ता '<user>' @ @ '<host>' (पासवर्ड का उपयोग कर: NO)
Lefteris Koutsoloukas

3

मैं ओपी के रूप में एक ही मुद्दा था, लेकिन इस धागे में जवाब मुझे उलझन में डाल दिया। विनय मंडला की कड़ी ने वास्तव में मेरे लिए काम किया। स्पष्टता के लिए यहां रिपॉजिट किया गया।

मेरा मुद्दा:

ERROR 1045 (28000): Access denied for user '<user>'@'<host>' (using password: NO)

यह साबित होता है कि mysql_config_editorपासवर्ड में विशेष वर्णों को ठीक से संभालना नहीं है।

समाधान:

जब mysql_config_editorआप पासवर्ड के लिए संकेत देते हैं, तो सुनिश्चित करें कि आप पासवर्ड को दोहरे उद्धरण चिह्नों में घेरते हैं (") । बाद में, आप बस ठीक लॉगिन कर सकते हैं।


1

मुझे यह त्रुटि मिल रही थी, सिवाय इसके कि (पासवर्ड का उपयोग करके: हाँ)

Giovanni द्वारा उल्लिखित कारण पासवर्ड में "#" के कारण था। मैंने पाया कि वर्कअराउंड संकेत दिए जाने पर अपने पासवर्ड के आसपास उद्धरण सम्मिलित करना है। एक ही प्रतिबंध .my.cnf का उपयोग करके सादे-पाठ पासवर्ड के साथ मौजूद है।


0

नवाज का जवाब सही है। मुझे जोड़ना बहुत कम है। मेरा सुझाव है कि आप एक नई कॉन्फ़िगरेशन फ़ाइल बनाने के लिए पर्यावरण चर MYSQL_TEST_LOGIN_FILE के साथ कुछ प्रयास करें, बस डिफ़ॉल्ट फ़ाइल के भ्रष्ट होने की स्थिति में। फ़ाइलों --no-defaultsको स्किप करने के लिए भी उपयोग करें .cnf। यदि पासवर्ड में चार है #, mysql login-pathतो काम नहीं करता है।

$ export MYSQL_TEST_LOGIN_FILE=$HOME/mylogin.cnf

$ mysql_config_editor set --login-path=mytest --host=127.0.0.1 --port=5622 --user=mytest --password
Enter password:

$ ls -l $MYSQL_TEST_LOGIN_FILE
-rw------- 1 mysql mysql 288 Feb 27 14:25 mylogin.cnf

$ mysql --no-defaults --login-path=mytest test

यह वातावरण चर सेट नहीं किया गया था। मैंने इसे सेट किया लेकिन मुझे बिल्कुल वैसा ही व्यवहार मिला। इसने mylogin.cnf में पासवर्ड को नजरअंदाज कर दिया।
लेथिस कोट्सोलोकास

क्या आप सुनिश्चित हैं कि mysqlकमांड निष्पादित करने वाला उपयोगकर्ता है mysql? यदि नहीं, तो इसके स्वामी को बदल दें mylogin.cnfऔर इसे काम करना चाहिए :)
Iazel

0

मैं मूल पोस्टर के समान मुद्दे का सामना कर रहा हूं। मुझे संदेह है कि इसे पासवर्ड के पात्रों के साथ करना है जो ठीक से एन्क्रिप्ट / डिक्रिप्ट नहीं होते हैं।

पुष्टि करने के लिए पासवर्ड को कुछ सरल करने की कोशिश करें और देखें कि क्या यह समस्या दूर हो जाती है।


मेरी भी यही समस्या थी। जैसा कि प्लाज़गोथ ने बताया, मेरे पास पासवर्ड में एक विशेष चरित्र था और यह काम नहीं कर रहा था। मेरे लिए जो काम किया गया है वह इस पोस्ट पर उपयोगकर्ता bglad से सुझाव है
विनय मंडला

0

मुझे शेल स्क्रिप्ट के साथ यह समस्या थी। मेरी स्क्रिप्ट $ HOME मान बदल रही थी और इसने --login-path = *** को नजरअंदाज कर दिया। जब मैंने $ HOME मूल्य को बदलना बंद कर दिया तब यह काम करना शुरू कर दिया।


0

ध्यान दें कि यदि आप लिनक्स उपयोगकर्ता के pathतहत चलाने की कोशिश कर रहे हैं - आप बस का उपयोग नहीं कर सकते । आपको रूट IE के रूप में लॉग इन करना होगा rootsudo

user@server:$ sudo su
user@server:$ Enter Password
root@server:$ mysql_config_editor set --login-path=data-main --user=<user> --password --host=<host>
root@server:$ Enter Password
root@server:$ exit
user@server:$ ...

जैसा कि यहाँ अन्य पोस्ट में भी बताया गया है .. यदि आपके पासmysql अल्फ़ान्यूमेरिक वर्णों के अलावा कुछ भी है तो आपको अपने पासवर्ड के आसपास दोहरे उद्धरण चिह्नों का उपयोग करना चाहिए ।

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