2012-07-25 11 views
32

के लिए पहुंच अस्वीकृत मुझे mysql में समस्या है। मैं इस पर अमल करने की कोशिश की:उपयोगकर्ता डेबियन-sys-maintain

echo "show databases" | mysql -B -N 

लेकिन मुझे मिल गया:

ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES) 

लेकिन जब मैं exec:

/etc/init.d/mysql restart 

मैं एक 'ठीक है' मिला है।

मैं

GRANT ALL PRIVILEGES on *.* TO [email protected] IDENTIFIED BY PASSWORD 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES; 

जहां पासवर्ड /etc/mysql/debian.cnf से है किया था। लेकिन यह मदद नहीं की। (निश्चित रूप से मैंने निजी फ्लश किया और mysql को पुनरारंभ किया)।

उत्तर

15

समस्या यह है, अपने GRANT बयान IDENTIFIED BY PASSWORD खंड का उपयोग करता है, और इस मामले mysql में एक पासवर्ड, नहीं एक प्लेन टेक्स्ट एक हैश प्राप्त करने की उम्मीद।

यदि आप सादे टेक्स्ट पासवर्ड देना चाहते हैं तो इसके बजाय IDENTIFIED BY 'your password' का उपयोग करें।

87

ऐसा इसलिए है क्योंकि डेबियन में MySQL खाता debian-sys-maint स्विच चालू/बंद करने और स्थिति की जांच के लिए उपयोग किया जाता है। उस उपयोगकर्ता के लिए पासवर्ड /etc/mysql/debian.cnf में संग्रहीत जैसा होना चाहिए। फ़ाइल इस तरह दिखता है:

# Automatically generated for Debian scripts. DO NOT TOUCH! 
[client] 
host  = localhost 
user  = debian-sys-maint 
password = <password> 
socket = /var/run/mysqld/mysqld.sock 
[mysql_upgrade] 
host  = localhost 
user  = debian-sys-maint 
password = <password> 
socket = /var/run/mysqld/mysqld.sock 
basedir = /usr 

तो पासवर्ड (क्योंकि आप इसे मैन्युअल रूप से बदल दिया है उदाहरण के लिए) init स्क्रिप्ट अब काम नहीं करेगा मेल नहीं खाता। आपको फ़ाइल के अनुसार पासवर्ड सेट करना चाहिए। तो

mysql -u root -p 
# Then type MySQL root password 
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>'; 
+0

मेरे पास फ़ील्ड [क्लाइंट] और [mysql_upgrade] /etc/mysql/debian.cnf में फ़ील्ड हैं। पासवर्ड फ़ाइल में और उपयोगकर्ता के लिए डेटाबेस में समान हैं। –

+1

हां, आपको बस इतना ही चाहिए - पासवर्ड अपडेट करें, क्योंकि यह पास प्रत्येक इंस्टॉलेशन के लिए अद्वितीय है। उदाहरण के लिए: आप data_dir को एक सर्वर से दूसरे सर्वर पर ले जाते हैं, इसलिए पास –

3

डेबियन-सीएस-रखरखाव उपयोगकर्ता को पुनर्स्थापित करने का सबसे आसान तरीका पैकेज mysql-server-5.5 को पुन: कॉन्फ़िगर करना है। यदि आप MySQL के रूट उपयोगकर्ता के लिए पासवर्ड जानते हैं, तो आप उपयोगकर्ता और उसके पासवर्ड को /etc/mysql/debian.cnf में पुनर्स्थापित करने का प्रयास कर सकते हैं।

sudo dpkg-reconfigure mysql-server-5.5 

नोट: यदि आप mysql पीआईडी ​​नहीं रोक सकता, बस sudo killall mysqld चलाते हैं। Mysql-server-5.5 को पुन: कॉन्फ़िगर करने के लिए इसकी आवश्यकता है।

+0

से मेल नहीं खाता है यह काम नहीं करता है। – specializt

+0

@specializt। यह मेरी समस्या का समाधान करता है। उपर्युक्त नोटेशन के बारे में सावधान रहें। – shgnInc

+0

मुझे कुछ "नोटेशन" के बारे में "सावधान" क्यों होना चाहिए? यह कोई समझ नहीं आता है। – specializt

संबंधित मुद्दे