दूरस्थ MySQL कनेक्शन सक्षम करें: ERROR 1045 (28000): उपयोगकर्ता के लिए प्रवेश निषेध


136

MySQL 5.1.31 Windows XP पर चल रहा है।

से स्थानीय इस प्रकार MySQL सर्वर (192.168.233.142) मैं रूट के रूप में कनेक्ट कर सकते हैं:

>mysql --host=192.168.233.142 --user=root --password=redacted

एक दूरस्थ मशीन (192.168.233.163) से, मैं देख सकता हूँ कि mysql पोर्ट खुला है:

# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).

लेकिन जब दूरस्थ मशीन से mysql से जुड़ने की कोशिश की जाती है , तो मुझे यह प्राप्त होता है:

# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)

मेरे पास mysql.user में केवल 2 प्रविष्टियाँ हैं:

Host         User     Password
--------------------------------------
localhost    root     *blahblahblah
%            root     [same as above]

रिमोट एक्सेस को सक्षम करने के लिए मुझे और क्या करने की आवश्यकता है?

संपादित करें

जैसा कि नीचे पाउलो द्वारा सुझाया गया है, मैंने आईपी विशिष्ट प्रविष्टि के साथ% के लिए mysql.user प्रविष्टि को बदलने का प्रयास किया, इसलिए मेरी उपयोगकर्ता तालिका अब इस तरह दिखती है:

Host             User     Password
------------------------------------------
localhost        root     *blahblahblah
192.168.233.163  root     [same as above]

मैंने मशीन को फिर से चालू किया, लेकिन समस्या बनी हुई है।

जवाबों:


211

आपको इसे जड़ के रूप में रखना होगा:

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'IP' IDENTIFIED BY 'PASSWORD' with grant option;

;

जहां IP वह IP है जहां आप एक्सेस की अनुमति देना चाहते हैं, USERNAME वह उपयोगकर्ता है जिसे आप कनेक्ट करने के लिए उपयोग करते हैं, और PASSWORD प्रासंगिक पासवर्ड है।

यदि आप %अपने आईपी के बजाय किसी भी आईपी से एक्सेस की अनुमति देना चाहते हैं

और फिर आपको केवल लगाना होगा

FLUSH PRIVILEGES;

या mysql सर्वर को पुनरारंभ करें और यह है।


वहाँ एक स्थानीय mysql ग्राहक के बिना यह करने के लिए कोई रास्ता नहीं है?
सेमीकजेंटी

एक विशिष्ट आईपी के विशेषाधिकारों को कैसे हटाया जाए?
उमैर अयूब

4
stackoverflow.com/a/21151255/470749 ने भी मेरी मदद की क्योंकि मुझे लगता है कि मेरी बाइंड-एड्रेस सेटिंग को कमेंट करने की जरूरत है। दूरस्थ विशेषाधिकार प्रदान करना काम करने के लिए पर्याप्त नहीं था।
रयान

8
उत्तर में नहीं समझाया गया है, लेकिन PASSWORDखाता पासवर्ड के साथ बदलें । मैं केवल बदलते ऊपर की कोशिश की USERNAMEऔर IPऔर यह मेरे लिए काम नहीं किया जब तक मैं बदल PASSWORD
रिचर्ड पर्नाबी-किंग

ऐसा करने के बाद, निम्नलिखित उत्तर में भी बताई गई बातों का पालन करें: stackoverflow.com/a/21151255/445438
budhajeewa

85

जब तक मैंने इसे बनाया, मुझे रिमोट एक्सेस देने के बाद भी यही त्रुटि मिली:

से /etc/mysql/my.cnf

Mysql के नए संस्करणों में फ़ाइल का स्थान है /etc/mysql/mysql.conf.d/mysqld.cnf

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1

(टिप्पणी इस लाइन: bind-address = 127.0.0.1)

फिर चला service mysql restart


6
या, इसे बाँध-पता = 0.0.0.0
लोलस्की

2
केवल टिप्पणी करना bind-addressमेरे लिए कारगर नहीं रहा। या तो bind-address = 0.0.0.0या bind-address = <server_ip>काम करता है।
छैनीताल

58

डिफ़ॉल्ट रूप से MySQL सर्वर में रिमोट एक्सेस अक्षम है। उपयोगकर्ता को दूरस्थ पहुँच प्रदान करने की प्रक्रिया है।

  1. मेरे sql बिन फ़ोल्डर पर जाएं या इसे जोड़ें PATH
  2. mysql -uroot -proot(या रूट पासवर्ड जो भी हो) लॉगिन करें
  3. सफलता पर आपको मिलेगा mysql>
  4. उस उपयोगकर्ता के लिए सभी तक पहुंच प्रदान करें।

GRANT ALL PRIVILEGES ON *.* TO 'username'@'IP' IDENTIFIED BY 'password';

यहां आईपी आईपी एड्रेस है, जिसके लिए आप रिमोट एक्सेस की अनुमति देना चाहते हैं, अगर हम %कोई आईपी एड्रेस डालते हैं, तो हम रिमोटली एक्सेस कर सकते हैं।

उदाहरण:

C:\Users\UserName> cd C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin

C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>mysql -uroot -proot

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.27 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.25 sec)

यह एक अन्य उपयोगकर्ता के लिए।

mysql> GRANT ALL PRIVILEGES ON *.* TO 'testUser'@'%' IDENTIFIED BY 'testUser';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

आशा है कि यह मदद करेगा


उत्कृष्ट विवरण के लिए +1, इसने वास्तव में मुझे यह देखने में मदद की कि 0 rows affectedयह आदर्श है :) इसके अलावा, service mysqld restartअंत में सिफारिश की गई है। [ mysqldकभी-कभी बस mysql]
नाथन डॉर्टमैन

# नोट: 5.6+ संस्करण के लिए, "सभी पर अनुदान ..." (विशेषाधिकारों के बिना) का उपयोग करें
निके मैनारिन

21

पाउलो की मदद मुझे समाधान तक ले गई। यह निम्नलिखित का एक संयोजन था:

  • पासवर्ड में डॉलर का चिह्न था
  • मैं एक लिनक्स शेल से कनेक्ट करने का प्रयास कर रहा था

बैश शेल एक पर्यावरण चर के विस्तार के लिए डॉलर चिन्ह को एक विशेष चरित्र के रूप में मानता है , इसलिए हमें इसे बैकस्लैश के साथ बच निकलने की आवश्यकता है। संयोग से, हमें इस मामले में ऐसा करने की ज़रूरत नहीं है जहां डॉलर का संकेत पासवर्ड का अंतिम चरित्र है।

एक उदाहरण के रूप में, यदि आपका पासवर्ड "पेस $ शब्द" है, तो लिनक्स बैश से हमें निम्नानुसार कनेक्ट करना होगा:

# mysql --host=192.168.233.142 --user=root --password=pas\$word

4
उपरोक्त के अलावा कृपया /etc/mysql/my.cnf की जाँच करें और टिप्पणी बाँध-पता = 127.0.0.1
Buminda

2
वैकल्पिक रूप से $ के विस्तार को रोकने के लिए एक उद्धरण का उपयोग किया जा सकता है: mysql --host=192.168.233.142 --user=root --password='pas$word' stackoverflow.com/a/6697781/500942
जलानब

पासवर्ड में '$'। अमूल्य। अनेक अनेक धन्यवाद !!
नागेंद्र ककरला

थोड़ी देर के लिए मेरे सिर को मॉनिटर के खिलाफ पीटने के बाद मैं इस पार आया और यह काम किया। मेरे पास था ! और @ मेरे पासवर्ड में। पासवर्ड बदला हुआ, विशेषाधिकारों का प्रवाह और मैं इस पर वापस आ गया हूं। धन्यवाद!
एजेएम

9

क्या आपके पास फ़ायरवॉल है? सुनिश्चित करें कि पोर्ट 3306 खुला है।

विंडोज़ पर, डिफ़ॉल्ट रूप से mysql रूट खाता बनाया जाता है जिसे केवल स्थानीयहोस्ट से एक्सेस करने की अनुमति है जब तक कि आपने स्थापना के दौरान दूरस्थ मशीनों से पहुंच को सक्षम करने का विकल्प नहीं चुना है।

होस्टनाम के रूप में '%' के साथ वांछित उपयोगकर्ता बनाना या अपडेट करना।

उदाहरण :

CREATE USER 'krish'@'%' IDENTIFIED BY 'password';

6
सर्वर का उत्तर "ERROR 1045 (28000): एक्सेस के लिए अस्वीकृत" ... यदि फ़ायरवॉल ब्लॉक को टाइमआउट मिल जाएगा ...
पाउलो एच।

बस पहले पोस्ट करना चाहता था। मेरा बुरा
वामसी कृष्ण B

@ क्रिश - आपके द्वारा सुझाया गया सब कुछ पहले से ही प्रश्न में कवर किया गया है
माइक चेम्बरलेन

5
  1. flush privilegesफिर से कोशिश करें।

  2. अनुदान पुनः लोड करने के लिए सर्वर को पुनः आरंभ करने का प्रयास करें।

  3. होस्ट "192.168.233.163" के साथ एक उपयोगकर्ता बनाने का प्रयास करें। "%" सभी को अनुमति नहीं देता है (यह अजीब है)


धन्यवाद, मैंने कोशिश की लेकिन कोई फायदा नहीं हुआ। मैंने आपके सुझावों के साथ प्रश्न को अद्यतन किया।
माइक चेम्बरलेन

4
एक और उपयोगकर्ता बनाने की कोशिश करें, और सभी अनुदान सेट करना न भूलें:CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION;
पाउलो एच।

4

मेरे मामले में मैं सेंट ओएस पर एक दूरस्थ mysql सर्वर से कनेक्ट करने का प्रयास कर रहा था। बहुत सारे समाधानों से गुजरने के बाद (सभी विशेषाधिकारों को प्रदान करते हुए, आईपी बाइंडिंग को हटाने, नेटवर्किंग को सक्षम करना) समस्या अभी भी हल नहीं हो रही थी।

जैसा कि यह निकला, विभिन्न समाधानों को देखते हुए, मैं iptables में आया, जिससे मुझे पता चला कि mysql पोर्ट 3306 कनेक्शन स्वीकार नहीं कर रहा है।

यहाँ एक छोटा सा नोट है कि कैसे मैंने इस मुद्दे की जाँच की और हल किया।

  • यदि पोर्ट कनेक्शन स्वीकार कर रहा है, तो जाँच करना:

    टेलनेट (mysql सर्वर आईपी) [portNo]

  • पोर्ट पर कनेक्शन की अनुमति के लिए आईपी टेबल नियम जोड़ना:

    iptables-INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

  • उत्पादन वातावरण के लिए यह अनुशंसा नहीं करेगा, लेकिन यदि आपके iptables को ठीक से कॉन्फ़िगर नहीं किया गया है, तो नियम जोड़ने से समस्या अभी भी हल नहीं हो सकती है। उस मामले में निम्नलिखित किया जाना चाहिए:

    सेवा iptables बंद करो

उम्मीद है की यह मदद करेगा।


3

अगर आप 192.168.2 को डायनेमिक आईपी का उपयोग कर रहे हैं, तो अब आपको हर बार अपने आईपी पते पर एक्सेस देने की चिंता नहीं करनी होगी।


1

मैं अपने अमेज़ॅन EC2 लिनक्स उदाहरण के लिए दूरस्थ लॉगिन MYSQL के साथ संघर्ष कर रहा था। पाया समाधान यह सुनिश्चित करने के लिए था कि मेरे सुरक्षा समूह में MySQL पोर्ट 3306 के लिए एक इनबाउंड नियम शामिल है, जिसमें मेरा आईपी पता (या कहीं भी 0.0.0.0/0) शामिल है। जैसे ही मैंने इस नियम को जोड़ा, मैं तुरंत दूर से कनेक्ट कर सकता था।


1

Mysql config फाइल के लिए नया स्थान है

/etc/mysql/mysql.conf.d/mysqld.cnf

0

MySQL ODBC 3.51 ड्राइवर है कि पासवर्ड में विशेष वर्ण संभाले नहीं हैं।

"चेतावनी - MySQL ODBC 3.51 के साथ आपको एक गंभीर सिरदर्द हो सकता है यदि आपके GRANT कमांड में पासवर्ड में विशेष वर्ण हैं, जैसे कि! @ # $% ^। MySQL ODBC 3.51 ODBC ड्राइवर पासवर्ड बॉक्स में इन विशेष वर्णों का समर्थन नहीं करता है। आपको प्राप्त होने वाला एकमात्र त्रुटि संदेश "एक्सेस अस्वीकृत" (पासवर्ड का उपयोग करना: YES) - http://www.plaintutorials.com/install-and-create-mysql-odbc-connector-on-windows-7/ से है


0

उपयोगकर्ता / होस्ट संयोजन पासवर्ड के बिना बनाया जा सकता है।

मैं यह मान रहा था कि मौजूदा उपयोगकर्ता (GUI ऐप का उपयोग करके) के लिए एक नया होस्ट जोड़ने पर, मौजूदा पासवर्ड का उपयोग नए उपयोगकर्ता / होस्ट संयोजन के लिए भी किया जाएगा।

मैं लॉग इन कर सकता था

mysql -u username -p PASSWORD

स्थानीय रूप से, लेकिन IPADDRESS से नहीं

mysql -u --host=HOST -p PASSWORD

(मैं वास्तव में एक पासवर्ड का उपयोग किए बिना IPADDRESS से लॉग इन कर सकता हूं)

mysql -u --host=HOST

पासवर्ड को एक्सेस करने की अनुमति देना:

set password for '<USER>'@'<IPADDRESS>' = '<PASSWORD>';

1
धन्यवाद, मैंने अपने माईस्क्ल सर्वर से दूरस्थ रूप से जुड़ने की कोशिश में बहुत समय बिताया और इस लाइन ने बहुत मदद की। उपयोगकर्ता का पासवर्ड सेट करते समय, मुझे वह त्रुटि मिली ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal numberजिसने मुझे इस लेख के लिए प्रेरित किया: knowmysql.blogspot.com/2013/09/ ... उन चरणों का पालन करने के बाद, मैं अंत में सर्वर से जुड़ सकता हूं।
एंडी फोर्केनो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.