MySQL ERROR 1045 (28000): उपयोगकर्ता 'बिल' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES) के लिए प्रवेश निषेध है


429

पहले मुझे यह उल्लेख करने दें कि मैं कई सुझाए गए प्रश्नों से गुजरा हूं और कोई पुनरावृत्ति उत्तर नहीं मिला। यहाँ मैं क्या कर रहा हूँ।

मैं अपने Amazon EC2 उदाहरण से जुड़ा हुआ हूं। मैं इस आदेश के साथ MySQL रूट के साथ लॉगिन कर सकता हूं:

mysql -u root -p

तब मैंने होस्ट% के साथ एक नया उपयोगकर्ता बिल बनाया

CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';

उपयोगकर्ता बिल के लिए सभी विशेषाधिकार दिए गए:

grant all privileges on *.* to 'bill'@'%' with grant option;

फिर मैं रूट उपयोगकर्ता से बाहर निकलता हूं और बिल के साथ लॉगिन करने का प्रयास करता हूं:

mysql -u bill -p

सही पासवर्ड दर्ज किया और यह त्रुटि मिली:

ERROR 1045 (28000): उपयोगकर्ता 'बिल' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES) के लिए प्रवेश निषेध है


34
क्या आपने FLUSH PRIVILEGES?
१४:१२ बजे १

6
ठीक है, मैंने बिना किसी सफलता के यह कोशिश की। कृपया कोई अन्य सुझाव।
अली

1
सर्वर का कौन सा संस्करण चल रहा है? मैंने देखा है 5.1 इस बारे में अजीब तरह से व्यवहार करता है।
पुदलहट

2
मैगेंटो स्थापित करते समय मेरे साथ ऐसा हुआ और मैंने बहुत अधिक गलतियाँ कीं। 'Mysql -u magento -p magento' डालना मुझे एक पासवर्ड के लिए प्रेरित कर रहा था और डिफ़ॉल्ट पासवर्ड के बजाय मैं रूट पासवर्ड डाल रहा था।
अमीरह

2
@Authentictech दुर्भाग्य से, सुझाए गए किसी भी समाधान ने मेरे लिए उस समय काम नहीं किया जब यह प्रश्न पोस्ट किया गया था। कृपया मेरा अपना जवाब देखें जिससे मुझे इस स्थिति से निकलने में मदद मिली। यही कारण है कि मैंने उनमें से किसी को भी उत्तर के रूप में चिह्नित नहीं किया। संभवतः मैं उत्तर के रूप में सर्वोच्च रैंक प्रतिक्रिया को चिह्नित कर सकता हूं।
अली

जवाबों:


441

आपके पास संभवतः एक अनाम उपयोगकर्ता है ''@'localhost'या ''@'127.0.0.1'

मैनुअल के अनुसार :

जब कई मैच संभव होते हैं, तो सर्वर को यह निर्धारित करना चाहिए कि उनमें से किसका उपयोग करना है। यह इस मुद्दे को इस प्रकार हल करता है: (...)

  • जब कोई क्लाइंट कनेक्ट करने का प्रयास करता है, तो सर्वर क्रमबद्ध क्रम में [तालिका mysql.user] की पंक्तियों के माध्यम से देखता है ।
  • सर्वर पहली पंक्ति का उपयोग करता है जो क्लाइंट होस्ट नाम और उपयोगकर्ता नाम से मेल खाता है।

(...) सर्वर पहले-विशिष्ट होस्ट मानों के साथ पंक्तियों को क्रमबद्ध करने वाले नियमों का उपयोग करता है । शाब्दिक होस्ट नाम [जैसे कि 'लोकलहोस्ट'] और आईपी पते सबसे विशिष्ट हैं।

इसलिए, इस तरह के एक अनाम उपयोगकर्ता किसी भी अन्य उपयोगकर्ता को "मास्क" करेगा जैसे '[any_username]'@'%'कनेक्ट करते समय localhost

'bill'@'localhost'मैच करता है 'bill'@'%', लेकिन ''@'localhost'पहले से मेल खाएगा (जैसे) ।

अनुशंसित समाधान इस अनाम उपयोगकर्ता को छोड़ना है (यह आमतौर पर वैसे भी करने के लिए एक अच्छी बात है)।


नीचे दिए गए संपादन मुख्य प्रश्न के लिए ज्यादातर अप्रासंगिक हैं। ये केवल इस थ्रेड के भीतर अन्य टिप्पणियों में उठाए गए कुछ सवालों के जवाब देने के लिए हैं।

संपादित करें 1

'bill'@'%'सॉकेट के माध्यम से प्रमाणीकरण ।

    रूट @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass --socket = / tmp / mysql-5.5.sock
    माईएसक्यूएल मॉनिटर मे आपका स्वागत है (...)

    mysql> उपयोगकर्ता का चयन करें, mysql.user से होस्ट करें;
    + ------ + ----------- +
    | उपयोगकर्ता | होस्ट |
    + ------ + ----------- +
    | बिल | % |
    | जड़ | 127.0.0.1 |
    | जड़ | :: 1 |
    | जड़ | लोकलहोस्ट |
    + ------ + ----------- +
    सेट में 4 पंक्तियाँ (0.00 सेकंड)

    mysql> SELECT USER (), CURRENT_USER ();
    + ---------------- + ---------------- +
    | USER () | CURRENT_USER () |
    + ---------------- + ---------------- +
    | बिल @ लोकलहोस्ट | बिल @% |
    + ---------------- + ---------------- +
    1 पंक्ति में सेट (0.02 सेकंड)

    mysql> SHOW VARIABLES 'Skip_networking' को पसंद करता है;
    + ----------------- + ------- +
    | चर_नाम | मान |
    + ----------------- + ------- +
    | Skip_networking | पर |
    + ----------------- + ------- +
    1 पंक्ति में सेट (0.00 सेकंड)

संपादित करें २

सटीक सेटअप के अलावा, मैं नेटवर्किंग को फिर से सक्रिय करता हूं, और अब मैं एक अनाम उपयोगकर्ता बनाता हूं ''@'localhost'

    root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64#/sysql
    माईएसक्यूएल मॉनिटर मे आपका स्वागत है (...)

    mysql> सृजित USER '' @ 'लोकलहोस्ट' IDENTIFIED BY 'अदरपास';
    क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)

    mysql> अलविदा

    root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
        --socket = / tmp / mysql-5.5.sock
    ERROR 1045 (28000): उपयोगकर्ता 'बिल' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES) के लिए प्रवेश निषेध है
    root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
        -127.0.0.1 --protocol = टीसीपी
    ERROR 1045 (28000): उपयोगकर्ता 'बिल' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES) के लिए प्रवेश निषेध है
    root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
        -होकलहोस्ट --protocol = टीसीपी
    ERROR 1045 (28000): उपयोगकर्ता 'बिल' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES) के लिए प्रवेश निषेध है

संपादित करें 3

समान स्थिति जैसे कि संपादन 2 में, अब अनाम उपयोगकर्ता का पासवर्ड प्रदान करना।

    रूट @ myhost: / home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -panotherpass -होकलॉस्ट
    माईएसक्यूएल मॉनिटर मे आपका स्वागत है (...)

    mysql> SELECT USER (), CURRENT_USER ();
    + ---------------- + ---------------- +
    | USER () | CURRENT_USER () |
    + ---------------- + ---------------- +
    | बिल @ लोकलहोस्ट | @localhost |
    + ---------------- + ---------------- +
    1 पंक्ति में सेट (0.01 सेकंड)

निष्कर्ष 1, संपादन 1 से: 'bill'@'%'एक सॉकेट के माध्यम से प्रमाणित कर सकता है ।

निष्कर्ष 2, संपादन 2 से: क्या कोई टीसीपी के माध्यम से या सॉकेट के माध्यम से जुड़ता है, प्रमाणीकरण प्रक्रिया पर कोई प्रभाव नहीं पड़ता है (सिवाय एक किसी और के रूप में कनेक्ट नहीं हो सकता है लेकिन 'something'@'localhost'सॉकेट के माध्यम से, जाहिर है)।

निष्कर्ष 3, संपादन 3 से: हालांकि मैंने निर्दिष्ट किया -ubill, मुझे एक अनाम उपयोगकर्ता के रूप में पहुंच प्रदान की गई है। यह ऊपर वर्णित "सॉर्टिंग नियमों" के कारण है। ध्यान दें कि अधिकांश डिफ़ॉल्ट प्रतिष्ठानों में, एक नो-पासवर्ड, अनाम उपयोगकर्ता मौजूद है (और सुरक्षित / हटाया जाना चाहिए)।


9
किसी के लिए उत्सुक होने के कारण कि 'बिल' @ 'लोकलहोस्ट' '' @ '' लोकलहोस्ट '' से मेल खाता है, जैसे कि मैं था, एक खाली स्ट्रिंग प्रभावी रूप से MySQL के प्रमाणीकरण एल्गोरिथ्म में एक वाइल्ड कार्ड का काम करता है।
डीन या

2
@ संजा इस वर्कअराउंड के साथ अतिरिक्त सावधान रहें। आप किसी भी स्थान से अपने डेटाबेस तक अनाम पहुँच की अनुमति दे सकते हैं। संदेह के मामले में, मैं उपयोगकर्ता को हटा दूंगा।
रैंडमसाइड

7
@RandomSeed इस टिप्पणी के लिए धन्यवाद! संभवतः मुझे अनाम उपयोगकर्ता को हटा देना चाहिए। PS मुझे dev.mysql.com/doc/refman/5.1/en/default-privileges.html मिला, जो कहता है कि इन उपयोगकर्ताओं को निश्चित रूप से हटाया जा सकता है DROP USER ''@'localhost';:। उन्हें किसी विशेष उद्देश्य की आवश्यकता नहीं है।
एलेक्स

1
मैंने अनाम उपयोगकर्ता को छोड़ दिया, लेकिन चीजें अभी भी काम नहीं कीं। तब मैंने पाया कि मुझे "FLUSH PRIVILEGES" भी जारी करना था। यह उल्लेख करना भी उपयोगी होगा।
नीम प्रक्षेत्र

2
यह जवाब है! यह हर mysql मैनुअल में बोल्ड कैपिटल अक्षरों में क्यों नहीं आता है। उपयोगकर्ता का उपयोग करें या यह आपके सभी लेखों को LOCALHOST से लॉग इन करना होगा!
सर्गेई

140

प्रयत्न:

~$ mysql -u root -p
Enter Password:

mysql> grant all privileges on *.* to bill@localhost identified by 'pass' with grant option;

10
यह बल्कि खतरनाक है, अगर कोई आपके बिल @ localhost mysql खाते को हैक कर लेता है, तो उसके पास आपके mysql सर्वर के सभी डेटाबेस तक अनंत पहुंच होगी।
एडोनिस के। काकोलीडिस

2
Whehey। मुझे अपने उपयोगकर्ता 'myusername'@'myhost.static.myip.com' के आसपास बोली लगानी पड़ी, तब इसने काम किया।
बेंडेको

यह मेरे लिए काम करता है, लेकिन मुझे डर है कि मैंने उपयोगकर्ता के लिए बहुत अधिक विशेषाधिकार दिए हैं
Csaba Toth

1
@CabaToth आपने किया, तब तक विशेषाधिकारों को कम करें जब तक कि आपके उपयोगकर्ता के पास वह नहीं है जो उसे चाहिए और अधिक नहीं।
16 अक्टूबर को jwenting

... और आप क्या करते हैं अगर यह आपको "उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: यूईएस) के लिए अस्वीकृत" देता है?
ग्रुओन शफेटो

75

जब तुम दौड़े

mysql -u bill -p

और यह त्रुटि मिली

ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)

mysqld आपसे जुड़ने की उम्मीद कर रहा है bill@localhost

बनाने का प्रयास करें bill@localhost

CREATE USER bill@localhost IDENTIFIED BY 'passpass';
grant all privileges on *.* to bill@localhost with grant option;

यदि आप दूरस्थ रूप से कनेक्ट करना चाहते हैं, तो आपको टीसीपी / आईपी का उपयोग करके या तो DNS नाम, सार्वजनिक आईपी या 127.0.0.1 निर्दिष्ट करना होगा:

mysql -u bill -p -hmydb@mydomain.com
mysql -u bill -p -h10.1.2.30
mysql -u bill -p -h127.0.0.1 --protocol=TCP

एक बार लॉगिन करने के बाद, कृपया इसे चलाएं

SELECT USER(),CURRENT_USER();

USER () रिपोर्ट करता है कि आपने MySQL में कैसे प्रमाणित करने का प्रयास किया

CURRENT_USER () रिपोर्ट करता है कि आपको mysql.user तालिका से MySQL में प्रमाणित करने की अनुमति कैसे दी गई थी

यह आपको एक बेहतर दृष्टिकोण देगा कि आपको कैसे और क्यों mysql में प्रवेश करने की अनुमति दी गई थी। यह जानना महत्वपूर्ण क्यों है? यह उपयोगकर्ता प्रमाणीकरण आदेश प्रोटोकॉल के साथ करना है।

यहाँ एक उदाहरण है: मैं अपने डेस्कटॉप MySQL पर एक अनाम उपयोगकर्ता बनाऊंगा

mysql> select user,host from mysql.user;
+---------+-----------+
| user    | host      |
+---------+-----------+
| lwdba   | %         |
| mywife  | %         |
| lwdba   | 127.0.0.1 |
| root    | 127.0.0.1 |
| lwdba   | localhost |
| root    | localhost |
| vanilla | localhost |
+---------+-----------+
7 rows in set (0.00 sec)

mysql> grant all on *.* to x@'%';
Query OK, 0 rows affected (0.02 sec)

mysql> select user,host from mysql.user;
+---------+-----------+
| user    | host      |
+---------+-----------+
| lwdba   | %         |
| mywife  | %         |
| x       | %         |
| lwdba   | 127.0.0.1 |
| root    | 127.0.0.1 |
| lwdba   | localhost |
| root    | localhost |
| vanilla | localhost |
+---------+-----------+
8 rows in set (0.00 sec)

mysql> update mysql.user set user='' where user='x';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> select user,host from mysql.user;
+---------+-----------+
| user    | host      |
+---------+-----------+
|         | %         |
| lwdba   | %         |
| mywife  | %         |
| lwdba   | 127.0.0.1 |
| root    | 127.0.0.1 |
| lwdba   | localhost |
| root    | localhost |
| vanilla | localhost |
+---------+-----------+
8 rows in set (0.00 sec)

mysql>

मुझे अनाम उपयोगकर्ता के रूप में लॉगिन करते हुए देखें:

C:\MySQL_5.5.12>mysql -urol -Dtest -h127.0.0.1 --protocol=TCP
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.5.12-log MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select user(),current_user();
+---------------+----------------+
| user()        | current_user() |
+---------------+----------------+
| rol@localhost | @%             |
+---------------+----------------+
1 row in set (0.00 sec)

mysql>

प्रमाणीकरण आदेश बहुत सख्त है। यह सबसे विशिष्ट से कम से कम की जाँच करता है। मैंने DBA StackExchange में इस प्रमाणीकरण शैली के बारे में लिखा

जब आवश्यक हो तो mysql क्लाइंट के लिए प्रोटोकॉल के रूप में टीसीपी के लिए स्पष्ट रूप से कॉल करना न भूलें।


1
'bill'@'localhost'मैच होना चाहिए 'bill@%', नहीं होना चाहिए?
रैंडमसाइड

@ याक आदेश केवल mysql.user के उपयोगकर्ता कॉलम पर आधारित नहीं है। MySQL प्रति se से मेल खाता कोई वर्ण नहीं करता है। मैंने DBA StackExchange में उपयोगकर्ता प्रमाणीकरण आदेश प्रोटोकॉल के बारे में लिखा: dba.stackexchange.com/a/10897/877
RolandoMySQLDBA

@ YaK यही कारण है कि मैंने विशेष रूप से उल्लेख किया है SELECT USER(),CURRENT_USER();। वास्तव में खराब सेटअप को छोड़कर आप इन दो कार्यों से अनाम उपयोगकर्ताओं को लगभग कभी नहीं देखते हैं।
रोलैंडमाइसीक्यूडीबीए

1
मैंने कभी नहीं माना कि सॉर्ट ऑर्डर पूरी तरह से आधारित है mysql.user। वास्तव में, यदि आप मेरे उत्तर को फिर से पढ़ते हैं, तो आप देखेंगे कि मैंने कहा था (वास्तव में, मैनुअल कहता है) सॉर्ट क्रम hostपहले कॉलम पर आधारित है । आपने अपने वर्तमान क्रेडेंशियल्स को कैसे जांचना है, इस बारे में बहुत कुछ लिखा है, लेकिन मुझे इस बारे में बहुत कम जानकारी है कि क्यों 'bill'@'localhost'नहीं लॉगिन किया जा सकता है 'bill'@'%', जो कि आज का प्रश्न AFIK है। ओपी के पास शायद एक खराब सेटअप है, यही कारण है कि उसे ये त्रुटियां मिलती हैं।
रैंडमसाइड

2
--protocol=TCPकुंजी थी। आपका बहुत बहुत धन्यवाद!
lfx

22

सुपर देर से इस के लिए

मैंने इन सभी अन्य उत्तरों की कोशिश की और कई अलग-अलग संस्करणों को mysql -u root -pचलाया लेकिन कभी भी बस नहीं चला


mysql -u root -p

और सिर्फ [ENTER]पासवर्ड के लिए दबाएं।


एक बार मैंने ऐसा किया कि यह काम कर गया। आशा है कि यह किसी की मदद करता है।


18

मेरे मामले में संबंधित समस्या का उपयोग करके कनेक्ट करने का प्रयास किया गया था:

mysql -u mike -p mypass

व्हॉट्सऐप ने स्पष्ट रूप से -u # uname # के बीच अनुमति दी है, लेकिन -p और # पासवर्ड # के बीच नहीं है

इसलिए जरूरत है:

mysql -u mike -pmypass

अन्यथा -p mypass के बीच व्हाइट-स्पेस के साथ mysql db नाम के रूप में 'mypass' लेता है


1
या: mysql -u usrname -p - यह किसी को भी पासवर्ड देखने से रोकता है क्योंकि यह एक नई लाइन छोड़ देगा और इसे प्रदर्शित किए बिना पासवर्ड

शानदार उत्तर @ म्स्त्रम
अर्पित सोलंकी

1
यह समाधान आरामदायक है, फिर भी यह स्पष्ट रूप से पासवर्ड टाइप करने के लिए असुरक्षित है, लेकिन किसी प्रकार के अनुदान विशेषाधिकारों और अन्य सामान को परिभाषित करने की आवश्यकता नहीं है। इसलिए यदि आप मैक बुक सुरक्षित हैं - यह दृष्टिकोण बहुत ही आरामदायक है, इससे भी ज्यादा मैंने इसका उपयोग docker mysql ड्राइवर से डेटा आयात करने के लिए किया है।
डिंपियाक्स

17

जब आप टाइप करते हैं mysql -u root -p, तो आप एक स्थानीय यूनिक्स सॉकेट पर mysql सर्वर से जुड़ रहे होते हैं।

हालाँकि आपके द्वारा दिया गया अनुदान, 'bill'@'%'केवल टीसीपी / आईपी कनेक्शन से काफी मेल खाता है।

यदि आप स्थानीय यूनिक्स सॉकेट तक पहुंच प्रदान करना चाहते हैं, तो आपको 'बिल' @ 'लोकलहोस्ट' को विशेषाधिकार देने की आवश्यकता है, जो कि पर्याप्त रूप से 'बिल'@'127.0.0.1' के समान नहीं है।

आप mysql कमांड लाइन क्लाइंट के साथ TCP / IP का उपयोग करके भी कनेक्ट कर सकते हैं, जैसा कि आपके द्वारा पहले से दिए गए विशेषाधिकारों से मेल खाने के लिए, जैसे कि mysql -u root -p -h 192.168.1.123स्थानीय IP पता जो भी आपके बॉक्स में है।


"बिल '@'% 'केवल टीसीपी / आईपी कनेक्शन से मेल खाता है" यह गलत है। इसे एक साफ (कुंवारी, आउट-ऑफ-द-बॉक्स) उदाहरण पर skip-networking
आज़माएं

@YaK मुझे इस तरह के सेटअप में कार्य करने के लिए 'उपयोगकर्ता' @ '%' नहीं मिल सकता है, आपका क्या मतलब है?
ओपन स्कूल

मैं नेटवर्किंग के बिना (इसलिए, एक सॉकेट के माध्यम से) v5.0 पर 'बिल' @ '%' के रूप में जुड़ सकता था। आप कौन सा संस्करण उपयोग कर रहे हैं? मैं इसे v5.5 पर आज़माऊंगा।
रैंडमसाइड

कृपया मेरा अद्यतन उत्तर देखें। मैं 'bill'@'%'v5.5 पर सॉकेट के माध्यम से लॉगिन करने में सक्षम था ।
रैंडमसाइड

17

यदि आप अपना पासवर्ड भूल जाते हैं या आप अपना पासवर्ड संशोधित करना चाहते हैं। आप इन चरणों का पालन कर सकते हैं:

1: अपने mysql को रोकें

[रूट @ maomao ~] # सेवा mysqld रोकें
MySQL को रोकें : [ठीक है]

2: mysql को पुनः आरंभ करने के लिए “--skip-अनुदान-तालिकाओं” का उपयोग करें

[रूट @ mcy400 ~] # mysqld_safe --skip- अनुदान-टेबल
[रूट @ साइबर 400 ~] # mysqld डेमन को डेटाबेस से शुरू करना / var / lib / mysql

3: एक नई विंडो खोलें और mysql -u root करें

[root @ cy400 ~] # mysql -u रूट
MySQL मॉनिटर में आपका स्वागत है। साथ समाप्त होता है; या \ g।

4: उपयोगकर्ता डेटाबेस को बदलें

mysql>
तालिका और स्तंभ नामों को पूरा करने के लिए mysql रीडिंग टेबल जानकारी का उपयोग करें। आप इस सुविधा को बंद कर सकते हैं -एक डेटाबेस के साथ एक तेज स्टार्टअप प्राप्त करने के लिए

5: अपने पासवर्ड को संशोधित करें आपका नया पासवर्ड "your your" में इनपुट होना चाहिए

mysql> अपडेट उपयोगकर्ता सेट पासवर्ड = पासवर्ड ('root123') जहां उपयोगकर्ता = 'रूट';
क्वेरी ठीक है, 3 पंक्तियाँ प्रभावित (0.00 सेकंड)
पंक्तियों से मेल खाती हैं: 3 परिवर्तित: 3 चेतावनियाँ: 0

6: फ्लश

mysql> फ्लश विशेषाधिकार;

7: छोड़ दिया

mysql>
अलविदा छोड़ें

8: mysql को पुनरारंभ करें

[रूट @ cy400 ~] # सेवा mysqld पुनरारंभ;
MySQL को रोकना: [OK]
MySQL को शुरू करना: [OK]

बिंगो can आप अपने उपयोगकर्ता नाम और नए पासवर्ड के साथ अपने डेटाबेस को जोड़ सकते हैं:

[root@cy400 ~]# mysql -u root -p <br>
Enter password: admin123 <br>
Welcome to the MySQL monitor.  Commands end with ; or \g. <br>
Your MySQL connection id is 2 <br>
Server version: 5.0.77 Source distribution <br>
Type 'help;' or '\h' for help. Type '\c' to clear the buffer. <br>
mysql> quit <br>
Bye

1
इससे मुझे मदद मिली, लेकिन अगर आपने होमब्रे के साथ इसे स्थापित किया है तो मैक पर mysql.server stop। मेरे मामले में, मैं उपयोगकर्ता कॉलम अपडेट नहीं कर सका क्योंकि वहाँ कोई नहीं है; यह सुरक्षित मोड में होने के कारण एक भी नहीं बना सका। जो मैं अभी कर रहा हूं उसके लिए मुझे परवाह नहीं है, लेकिन मैं वास्तव में इस प्रारूप के उत्तर की सराहना करता हूं जिसमें सटीक इनपुट और आउटपुट दिखाए गए हैं। धन्यवाद!
सजीटलिन

मैं माफी चाहता हूँ, मैं पहले कभी मैक का उपयोग नहीं किया है। तो मैं आपकी मदद नहीं कर सकता।
ली यिंगजुन

15

अपने आप को एक प्रमुख सिरदर्द से बचाएं ... आपकी समस्या यह हो सकती है कि आप पासवर्ड के आसपास के उद्धरणों को याद कर रहे हैं। कम से कम मेरा मामला था कि मुझे 3 घंटे के लिए अलग कर दिया।

[client]
user = myusername
password = "mypassword"   # <----------------------- VERY IMPORTANT (quotes)
host = localhost

http://dev.mysql.com/doc/refman/5.7/en/option-files.html

"यहां एक विशिष्ट उपयोगकर्ता विकल्प फ़ाइल है:" खोजें और उदाहरण देखें कि वे किस राज्य में हैं। सौभाग्य, और मैं किसी और को कुछ समय बचाने की उम्मीद करता हूं।


1
इसके लिए शुक्रिया। मैं इस पर एक दिन का आधा बर्बाद कर दिया है और पासवर्ड के आसपास बेवकूफ उद्धरण चाल किया!
manfromfl

Haha। जब मैं मेरे साथ हुआ तो मैंने बहुत ज्यादा बर्बाद किया। सहायता करके हमें खुशी होगी।
मिमोरिया

12

समाधान अनाम (किसी भी) उपयोगकर्ता को हटाने के लिए है!

मैं भी सर्वर सेटअप पर किसी और द्वारा एक ही मुद्दे का सामना करना पड़ा। मैं आमतौर पर MySQL स्थापित करने पर एक अनाम उपयोगकर्ता बनाने का विकल्प नहीं चुनता, इसलिए इस पर ध्यान नहीं दिया गया। प्रारंभ में मैंने "रूट" उपयोगकर्ता के रूप में लॉग इन किया और "सामान्य" उपयोगकर्ता (उर्फ उपयोगकर्ताओं के साथ केवल उपयोक्ता के रूप में उनके उपयोगकर्ता नाम के साथ dbs पर aka उपयोगकर्ता) बनाया, फिर लॉग आउट किया, फिर पहले सामान्य उपयोगकर्ता का सत्यापन किया। मैं लॉग इन नहीं कर सका। न तो phpMyAdmin के माध्यम से, न ही शेल के माध्यम से। पता चला, अपराधी यह "कोई भी" उपयोगकर्ता है।


11

मुझे कुछ इसी तरह की समस्या थी - MySQL में प्रवेश करने के पहले प्रयास पर, जैसा कि root, इसने मुझे बताया कि प्रवेश निषेध है। बाहर मुड़ता है मैं का उपयोग करने के लिए भूल गया sudo...

इसलिए, यदि आप rootपहले प्रयास में असफल रहते हैं, तो प्रयास करें:

sudo mysql -u root -p

और फिर अपना पासवर्ड दर्ज करें, यह काम करना चाहिए।


6

मेरे लिए सबसे अच्छा समाधान है।

मेरा उपयोगकर्ता सोनार है और जब भी मैं बाहरी या अन्य मशीन से अपने डेटाबेस से जुड़ने की कोशिश कर रहा हूं तो मुझे त्रुटि हो रही है

ERROR 1045 (28000): Access denied for user 'sonar'@'localhost' (using password: YES)

जैसा कि मैं एक और मशीन से यह कोशिश कर रहा हूँ और जेनकिंस नौकरी के माध्यम से मेरे URL तक पहुँचने के लिए है

alm-lt-test.xyz.com

यदि आप दूर से कनेक्ट करना चाहते हैं, तो आप इसे विभिन्न तरीकों से निर्दिष्ट कर सकते हैं:

mysql -u sonar -p -halm-lt-test.xyz.com
mysql -u sonar -p -h101.33.65.94
mysql -u sonar -p -h127.0.0.1 --protocol=TCP
mysql -u sonar -p -h172.27.59.54 --protocol=TCP

URL के साथ इसे एक्सेस करने के लिए आपको बस निम्नलिखित क्वेरी को निष्पादित करना होगा।

GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'alm-lt-test.xyz.com' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'127.0.0.1' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'172.27.59.54' IDENTIFIED BY 'sonar';

4

ठीक है, मुझे यकीन नहीं है लेकिन शायद यह my.cnf फाइल है mysql इंस्टॉलेशन डायरेक्टरी के अंदर अपराधी है। इस लाइन पर टिप्पणी करें और समस्या का समाधान हो सकता है।

bind-address = 127.0.0.1

1
अधिक जानकारी के लिए, आप इसे wiki.bitnami.org/Compords/MySQL
Ali

1
मुझे पूरा यकीन है कि यह मुद्दा नहीं है। अगर ऐसा होता है, तो MySQL 127.0.0.1 के अलावा किसी भी होस्ट से कनेक्शन लेने से इनकार करता है, और आपको SQL 'एक्सेस अस्वीकृत' त्रुटि नहीं मिलेगी।
पेलमिस्टर

3

बस आपको एक असामान्य परिस्थिति से अवगत कराना चाहता था जो मुझे वही त्रुटि मिली। शायद यह भविष्य में किसी की मदद करता है।

मैंने कुछ आधार दृश्य विकसित किए थे, विकास स्थल पर बनाए और उन्हें उत्पादन-स्थल पर स्थानांतरित कर दिया। उस सप्ताह बाद में मैंने एक PHP स्क्रिप्ट को बदल दिया और अचानक सभी त्रुटियां सामने आईं कि उपयोगकर्ता 'लोकल-वेब-यूज़र' @ 'लोकलहोस्ट' के लिए एक्सेस से वंचित कर दिया गया। डेटा स्रोत ऑब्जेक्ट नहीं बदला था, इसलिए मैंने MySQL में डेटाबेस उपयोगकर्ता पर ध्यान केंद्रित किया, इस बीच चिंता करते हुए किसी ने मेरी वेबसाइट को हैक कर लिया। सौभाग्य से साइट के बाकी हिस्सों को कोई परेशानी नहीं हुई।

यह बाद में पता चला कि विचार अपराधी थे। हमारे ऑब्जेक्ट ट्रांसफर स्थानीय वेबसाइट उपयोगकर्ता की तुलना में किसी अन्य (और रिमोट: एडमिन @ आईपी-एड्रेस) उपयोगकर्ता का उपयोग करके किए जाते हैं। इसलिए विचार 'व्यवस्थापक' @ 'आईपी-एड्रेस' के साथ निश्चित किए गए थे। दृश्य निर्माण डिफ़ॉल्ट डिफ़ॉल्ट है

SQL SECURITY DEFINER

जब स्थानीय-वेब-उपयोगकर्ता दृश्य का उपयोग करने की कोशिश करता है तो यह टेबल का उपयोग करने के लिए निश्चित विशेषाधिकार की कमी पर ठोकर खाता है। एक बार सुरक्षा को बदल दिया गया था:

SQL SECURITY INVOKER

समस्या हल हो गई थी। वास्तविक समस्या त्रुटि संदेश के आधार पर प्रत्याशित की तुलना में पूरी तरह से अलग थी।


1
यह मेरी समस्या का स्रोत होने के साथ-साथ एक लापता "निश्चित" के साथ एक दृश्य बन गया। यह पता लगाने का एक त्वरित तरीका कि क्या आपके साथ ऐसा हो रहा है, उसी तालिका या रूट के रूप में देखने का प्रयास करने के लिए है - यदि आप करते हैं, तो त्रुटि संदेश बहुत अधिक वर्णनात्मक "ERROR 1449 (HY000) में बदल जाता है: उपयोगकर्ता के रूप में निर्दिष्ट निश्चित रूप से मौजूद नहीं है "।
जोशुआ डेविस

3

इसके बीच अंतर है:

CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';

तथा

CREATE USER 'bill'@'localhost' IDENTIFIED BY 'passpass';

इसे जाँचे:

mysql> select user,host from mysql.user;
+---------------+----------------------------+
| user          | host                       |
+---------------+----------------------------+
| bill          | %                          | <=== created by first
| root          | 127.0.0.1                  |
| root          | ::1                        |
| root          | localhost                  |
| bill          | localhost                  | <=== created by second
+---------------+----------------------------+

आदेश

mysql -u bill -p

'बिल' @ 'लोकलहोस्ट' और 'बिल' @ ''% '' पर नहीं।

'बिल' @ 'लोकलहोस्ट' के लिए कोई अनुमति नहीं है

आपको त्रुटि मिलती है:

ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)

समस्या को हल करना:

CREATE USER 'bill'@'localhost' IDENTIFIED BY 'passpass';

grant all privileges on . to 'bill'@'localhost' with grant option;

अनुदान वक्तव्य में त्रुटि हुई। मैं एक डेटाबेस की तरह तो निर्दिष्ट करने के लिए की जरूरत: newdb पर सभी विशेषाधिकार देते हैं * करने के लिए ....।
LeBird

3

यह तब भी होता है जब आपके पासवर्ड में कुछ विशेष अक्षर जैसे @, $, आदि होते हैं। इस स्थिति से बचने के लिए आप सिंगल कोट्स में पासवर्ड लपेट सकते हैं:

$ mysql -usomeuser -p's0mep@$$w0Rd'

या इसके बजाय प्रवेश करते समय पासवर्ड का उपयोग न करें। इसे खाली छोड़ दें और तब टाइप करें जब टर्मिनल पूछता है। यह अनुशंसित तरीका है।

$ mysql -usomeuser -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 191
Server version: 5.5.46-0ubuntu0.14.04.2 (Ubuntu)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

3
यह वास्तव में एक मुद्दा हो सकता है (जैसा कि यह मेरे लिए था)। मेरे किसी भी खाते के लिए मेरे सभी पासवर्ड का उपयोग करके उत्पन्न होते हैं pwgen। आज मैंने एक MySQL डेटाबेस और उसके उपयोगकर्ता के लिए एक नया जनरेट किया। दुर्भाग्य से पासवर्ड में बैकस्लैश "\" था जिसे मैंने त्रुटियों की उत्पत्ति के रूप में पहचाना नहीं था (मैंने ऐसा सोचा भी नहीं था)। इसलिए, मैंने घंटों समाधान खोजा। पासवर्ड को "123" पर सेट करने के बाद निराशा में प्रवेश किया। ... उपयोगकर्ताओं को इस बात की जानकारी होनी चाहिए कि कुछ विशेष वर्ण समस्याओं का कारण बन सकते हैं क्योंकि MySQL उदाहरण के लिए "daiy4ha4in7chooshuiphie \ Th * aew" जैसे पासवर्ड का उपयोग करने पर कोई चेतावनी नहीं दिखाता है।
अरविद

1
यह एक जवाब के रूप में पोस्ट करने के बारे में था अगर यह अभी तक नहीं दिखा था, यह बस नोटिस करने के लिए मेरे लिए सूची से बहुत नीचे था (इसलिए मैं इसे +1 कर रहा हूं)
Assimilater

3

मेरे लिए, यह समस्या MySQL 5.7.2 की एक नई सुविधा के कारण थी: यदि उनकी userप्रविष्टियों को अनदेखा किया जाता हैplugin फ़ील्ड खाली है जाता है।

mysql_native_passwordउन्हें पुन: प्रयोज्य करने के लिए इसे सेट करें:

UPDATE user SET plugin='mysql_native_password' WHERE user='foo';
FLUSH PRIVILEGES;

MySQL 5.7.2 के लिए रिलीज़ नोट देखें«प्रमाणीकरण नोट्स» के तहत ।

किसी कारण के लिए (हो सकता है क्योंकि मेरे पूर्व 4.1 पासवर्ड हैश को हटा दिया गया था), द mysql_upgrade स्क्रिप्ट ने डिफ़ॉल्ट प्लगइन मान सेट नहीं किया था।

मुझे निम्नलिखित चेतावनी संदेश को देख कर पता चला /var/log/mysql/error.log:

[चेतावनी] उपयोगकर्ता प्रविष्टि 'फू' @ '%' में एक खाली प्लगइन मान है। उपयोगकर्ता को नजरअंदाज कर दिया जाएगा और कोई भी इस उपयोगकर्ता के साथ लॉगिन नहीं कर सकता है।

मैं इस उत्तर को यहाँ पोस्ट करता हूँ शायद किसी को इस तरह की हास्यास्पद राशि का उपयोग करने से बचाए जैसा मैंने किया था।


2

यकीन नहीं होता कि किसी और को यह मददगार मिलेगा, लेकिन मैंने एक ही त्रुटि का सामना किया और किसी भी अनाम उपयोगकर्ता के लिए सभी खोज की ... और कोई भी नहीं थे। यह समस्या समाप्त हो गई कि उपयोगकर्ता खाता "SSL की आवश्यकता" के लिए सेट किया गया था - जो मैंने PHPMyAdmin में पाया उपयोगकर्ता खातों में जाकर उपयोगकर्ता के लिए संपादन विशेषाधिकार पर क्लिक करके। जैसे ही मैंने इस विकल्प को अनियंत्रित किया, सब कुछ उम्मीद के मुताबिक काम किया!


2

डिबगिंग सारांश

  • टाइपो त्रुटि के लिए जाँच करें: उपयोगकर्ता नाम या पासवर्ड।
  • होस्ट नाम की जाँच करें और mysql.user तालिका होस्ट नाम के साथ तुलना करें।
  • उपयोगकर्ता की मौजूदगी की जाँच करें या नहीं।
  • जांचें कि क्या होस्ट में आईपी पता या होस्ट नाम शामिल है।

इस बात की बहुत संभावना है कि, आपने अपने काम में कई बार इस मुद्दे का सामना किया होगा। उपयोगकर्ता नाम या पासवर्ड गलत तरीके से दर्ज करने के कारण यह समस्या सबसे अधिक बार हुई। हालांकि यह एक कारण है, लेकिन कई अन्य संभावनाएं हैं जो आपको यह मुद्दा मिल सकता है। कभी-कभी, यह बहुत समान दिखता है, लेकिन जब आप गहरी खुदाई करते हैं, तो आपको इस त्रुटि में योगदान देने वाले कई कारकों का एहसास होगा। यह पोस्ट विस्तार से बताएगी, अधिकांश सामान्य कारणों और इस मुद्दे को ठीक करने के लिए चारों ओर काम करती है।

संभावित कारण:

  • केस 1: टाइपो त्रुटि: उपयोगकर्ता नाम या पासवर्ड।

यह इस त्रुटि का सबसे आम कारण है। यदि आपने उपयोगकर्ता नाम या पासवर्ड गलत दर्ज किया है, तो निश्चित रूप से आपको यह त्रुटि मिलेगी।

समाधान:

इस प्रकार की त्रुटि का समाधान बहुत सरल है। बस सही उपयोगकर्ता नाम और पासवर्ड दर्ज करें। इस त्रुटि को हल किया जाएगा। यदि आप पासवर्ड भूल जाते हैं तो आप उपयोगकर्ता नाम / पासवर्ड को रीसेट कर सकते हैं। यदि आप व्यवस्थापक / रूट खाते के लिए पासवर्ड भूल जाते हैं, तो रूट पासवर्ड को रीसेट / पुनर्प्राप्त करने के कई तरीके हैं। अगर आप रूट पासवर्ड भूल जाते हैं तो मैं रूट पासवर्ड इन-केस रीसेट करने के बारे में एक और पोस्ट प्रकाशित करूंगा।

  • केस 2: गलत होस्ट से एक्सेस करना।

MySQL एक सुरक्षा सुविधाओं के रूप में उपयोगकर्ता की पहुँच के लिए होस्ट आधारित प्रतिबंध प्रदान करता है। हमारे उत्पादन वातावरण में, हम केवल एप्लिकेशन सर्वर तक पहुंच अनुरोध को प्रतिबंधित करते थे। यह सुविधा कई उत्पादन परिदृश्यों में वास्तव में सहायक है।

समाधान:

जब आप इस प्रकार की समस्या का सामना करते हैं, तो पहले देखें कि क्या आपके मेजबान को mysql.user तालिका की जाँच करके अनुमति दी गई है या नहीं। यदि यह परिभाषित नहीं है, तो आप mysql.user तालिका में नया रिकॉर्ड अपडेट या सम्मिलित कर सकते हैं। आम तौर पर, रिमोट मशीन से रूट उपयोगकर्ता के रूप में एक्सेस करना अक्षम है और सुरक्षा चिंताओं के कारण यह एक सर्वोत्तम अभ्यास नहीं है। यदि आपको कई मशीनों से अपने सर्वर तक पहुंचने की आवश्यकता है, तो केवल उन मशीनों तक पहुंच प्रदान करें। यह बेहतर है कि वाइल्डकार्ड (%) का उपयोग न करें और सार्वभौमिक पहुंच प्रदान करें। मुझे mysql.user टेबल को अपडेट करने दें, अब डेमूसर किसी भी होस्ट से MySQL सर्वर एक्सेस कर सकता है।

  • केस 3: उपयोगकर्ता सर्वर पर मौजूद नहीं है।

इस प्रकार की त्रुटि तब होती है जब उपयोगकर्ता, जिसे आप MySQL सर्वर पर मौजूद नहीं होना चाहते हैं।

समाधान:

जब आप इस प्रकार की समस्या का सामना करते हैं, तो बस जांचें कि उपयोगकर्ता mysql.user तालिका में मौजूद है या नहीं। यदि रिकॉर्ड मौजूद नहीं है, तो उपयोगकर्ता पहुँच नहीं सकता है। यदि उस उपयोगकर्ता तक पहुँचने की आवश्यकता है, तो उस उपयोगकर्ता नाम के साथ एक नया उपयोगकर्ता बनाएँ।

  • केस 4: न्यूमेरिक और नाम आधारित मेजबानों का मिश्रण।

महत्वपूर्ण बिंदु

  • उपयोगकर्ता होस्ट को परिभाषित करते समय वाइल्डकार्ड का उपयोग करना उचित नहीं है, सटीक होस्ट नाम का उपयोग करने का प्रयास करें।

  • रिमोट मशीन से रूट लॉगिन को अक्षम करें।

  • प्रॉक्सी उपयोगकर्ता अवधारणा का उपयोग करें।

इस विषय से संबंधित कुछ अन्य अवधारणाएं हैं और उन विषयों का विवरण प्राप्त करना इस लेख का बहुत अलग दायरा है। हम आगामी लेखों में निम्नलिखित संबंधित विषयों पर गौर करेंगे।

  • यदि आप MySQL सर्वर से रूट पासवर्ड भूल गए हैं, तो क्या करें।
  • MySQL एक्सेस विशेषाधिकार मुद्दों और उपयोगकर्ता से संबंधित तालिकाओं।
  • MySQL सुरक्षा सर्वोत्तम प्रथाओं के साथ सुविधाएँ।

मुझे उम्मीद है कि यह पोस्ट MySQL के उपयोगकर्ता के लिए MySQL त्रुटि कोड 1045 एक्सेस को ठीक करने में आपकी मदद करेगी।


2

मुझे उम्मीद है कि आपने mysql में debian-sys-maint उपयोगकर्ता को हटाकर अधिक नुकसान नहीं किया है

अपने mysql डेमन को सामान्य तरीके से चलाएं। अपने mysql क्लाइंट को नीचे दिखाए गए अनुसार शुरू करें

mysql -u debian-sys-maint -p

दूसरे टर्मिनल में, catफ़ाइल/etc/mysql/debian.cnf । उस फ़ाइल में एक पासवर्ड है; उस पासवर्ड को पेस्ट करें जब इसके लिए संकेत दिया जाए।

http://ubuntuforums.org/showthread.php?t=1836919


2

मैंने अभी तक एक और मामले की खोज की जो सतह पर एक किनारे का मामला प्रतीत होता है; मैं फ़ाइल सिस्टम को SELECT INTO .. ​​OUTFILE को रूट के माध्यम से निर्यात कर सकता हूं, लेकिन नियमित उपयोगकर्ता के रूप में नहीं। हालांकि यह अनुमतियों का मामला हो सकता है, मैंने उस पर ध्यान दिया है, और विशेष रूप से स्पष्ट कुछ भी नहीं देखें। मैं केवल इतना कह सकता हूं कि क्वेरी को एक नियमित उपयोगकर्ता के रूप में निष्पादित करना, जिसके पास प्रश्न में डेटा बेस पर सभी अनुमतियाँ हैं, उस एक्सेस अस्वीकृत त्रुटि को लौटाता है जिसने मुझे इस विषय तक पहुंचाया। जब मुझे एक पुराने प्रोजेक्ट में SELECT INTO… OUTFILE के एक सफल उपयोग की प्रतिलिपि मिली, तो मैंने देखा कि मुझे रूट के रूप में लॉग इन किया गया था। जब मैं रूट के रूप में लॉग इन करता हूं, तो निश्चित रूप से, क्वेरी अपेक्षा के अनुसार चलती है।


1

अपडेट: v8.0.15 (शायद यह संस्करण) परPASSWORD() फ़ंक्शन काम नहीं करता है।

आपको करना होगा:

  1. सुनिश्चित करें कि आपने पहले MySQL को रोक दिया है।
  2. विशेषाधिकार बाईपास के साथ सुरक्षित मोड में सर्वर चलाएँ: sudo mysqld_safe --skip-grant-tables
  3. लॉग इन करें: mysql -u root
  4. mysql> UPDATE mysql.user SET authentication_string=null WHERE User='root';
  5. mysql> FLUSH PRIVILEGES;
  6. mysql> exit;
  7. फिर से लॉगिन करें: mysql -u root
  8. mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

0

जब आप चलाते हैं mysql -u bill -p, तो localhostयह आपके आईपी में हल हो जाता है, क्योंकि यह 127.0.0.1 है और आपकी /etc/hostsफ़ाइल में, जैसा कि डिफ़ॉल्ट 127.0.0.1 localhostमौजूद है। इसलिए, mysql आपकी व्याख्या करता है, bill@localhostजिसके साथ अनुमति नहीं दी गई है bill@'%'। यही कारण है कि rootपरिणाम के लिए उपयोगकर्ता के लिए 2 अलग-अलग रिकॉर्ड हैंselect host, user from mysql.user; क्वेरी के ।

इस मुद्दे को संभालने के दो तरीके हैं।

/etc/hostsजब आप लॉगिन करने का प्रयास करते हैं तो एक आईपी को निर्दिष्ट किया जाता है, जो फ़ाइल द्वारा उलटा नहीं होता है । उदाहरण के लिए, सर्वर का आईपी है 10.0.0.2। जब आप कमांड चलाते हैं mysql -u bill -p -h 10.0.0.2, तो आप लॉगिन कर पाएंगे। आप लिखते हैं, तो select user();, आप मिल जाएगा bill@10.0.0.2। बेशक, किसी भी डोमेन नाम को आपकी /etc/hostsफ़ाइल में इस आईपी के लिए हल नहीं किया जाना चाहिए ।

दूसरे, आपको इस विशिष्ट डोमेन नाम के लिए अनुदान की आवश्यकता है। के लिए bill@localhost, आपको कमांड को कॉल करना चाहिए grant all privileges on *.* to bill@localhost identified by 'billpass';। इस स्थिति में, आप कमांड से लॉगिन कर पाएंगे mysql -u bill -p। एक बार लॉग इन करने के बाद, select user();कमांड रिटर्नbill@localhost

लेकिन यह केवल इसके लिए है कि आप एक ही होस्ट में mysql सर्वर को लॉगिन करने का प्रयास करें। दूरस्थ होस्ट से, mysql अपेक्षित व्यवहार करता है, '%' आपको लॉगिन करने के लिए अनुदान देगा।


0

मैंने पुराने बग्गी उपयोगकर्ता की 'बिल' प्रविष्टियाँ हटाकर इसे हल कर दिया (यह महत्वपूर्ण हिस्सा है: दोनों mysql.user और mysql.db से ), फिर उसी उपयोगकर्ता को पहले से उदास बनाया:

FLUSH PRIVILEGES;
CREATE USER bill@localhost IDENTIFIED BY 'passpass';
grant all privileges on *.* to bill@localhost with grant option;
FLUSH PRIVILEGES;

काम किया, उपयोगकर्ता कनेक्ट हो रहा है। अब मैं इसमें से कुछ प्रीलिम्स निकालूंगा :)


0

मुझे उसी त्रुटि का सामना करना पड़ा। सेटअप जो काम नहीं कर रहा था वह इस प्रकार है:

define("HOSTNAME", "localhost");
define("HOSTUSER", "van");
define("HOSTPASS", "helsing");
define("DBNAME", "crossbow");
$connection = mysqli_connect(HOSTNAME, HOSTUSER, HOSTPASS);

नीचे संपादित सेटअप वह है जो इसे काम कर रहा है। अंतर नोटिस?

define('HOSTNAME', 'localhost');
define('HOSTUSER', 'van');
define('HOSTPASS', 'helsing');
define('DBNAME', 'crossbow');
$connection = mysqli_connect(HOSTNAME, HOSTUSER, HOSTPASS);

अंतर डबल कोट्स है। वे जावा के विपरीत PHP में काफी महत्वपूर्ण प्रतीत होते हैं और उनका प्रभाव तब होता है जब वे चरित्रों से बचते हैं, URLs सेट करते हैं और अब, किसी फ़ंक्शन को पैरामीटर पास करते हैं। वे प्रेटीयर हैं (मुझे पता है) लेकिन हमेशा जितना संभव हो सके सिंगल कोट्स का उपयोग करें, यदि आवश्यक हो तो डबल कोट्स को नेस्टेड किया जा सकता है।

यह त्रुटि तब सामने आई जब मैंने विंडोज वातावरण के विपरीत लिनक्स बॉक्स पर अपने आवेदन का परीक्षण किया।


0

मुझे इसी तरह की समस्या थी क्योंकि मेरे पासवर्ड में ";" जब मैं इसे पहली बार में बनाता हूं तो मेरा पासवर्ड तोड़ दिया जाता है। इसके साथ सावधानी यदि आप मदद कर सकते हैं।


0

यह बहुत कम लोगों पर लागू हो सकता है, लेकिन यहाँ जाता है। !अपने पासवर्ड में विस्मयादिबोधक का उपयोग न करें ।

मैंने किया और मारियाडीबी का उपयोग करके उपरोक्त त्रुटि मिली। जब मैंने इसे सिर्फ संख्याओं और अक्षरों के लिए सरल किया तो यह काम किया। अन्य पात्र जैसे कि @और $ठीक काम करते हैं - मैंने एक ही उदाहरण में उन वर्णों का उपयोग एक अलग उपयोगकर्ता में किया।

इस पते पर पाँचवीं प्रतिक्रिया ने मुझे मेरे ठीक कर दिया।


0

विंडोज पर, यहाँ है कैसे हल करने के लिए:

ERROR 1045 (28000): उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: NO) के लिए प्रवेश निषेध है।

  1. नियंत्रण कक्ष से mysql की स्थापना रद्द करें
  2. से MySql फ़ोल्डर हटाएँ C:\Program Files,C:\Program Files (x86)औरC:\ProgramData
  3. Mysql स्थापित करें

अन्य सभी उत्तरों की कोशिश की, अंत में इस कोशिश करने का संकल्प लिया और यह काम किया!
जसोनोरिअर्डन

0

यह तब भी हो सकता है यदि MySQL केस-असंवेदनशील OS, जैसे कि Windows पर चल रहा हो।

उदाहरण के लिए मैंने पाया कि इन क्रेडेंशियल्स का उपयोग कर डेटाबेस से जुड़ने का प्रयास विफल रहा:

mysql> grant select on databaseV105.* to 'specialuser' identified by 's3curepa5wrd';

$ mysql -specialuser' -p's3curepa5wrd' -h10.61.130.89 databaseV105

ERROR 1045 (28000): उपयोगकर्ता 'specialuser'@'10.0.1.113' (पासवर्ड का उपयोग करके:)

लेकिन, यह सफल रहा:

mysql> grant select on databasev105.* to 'specialuser' identified by 's3curepa5wrd';

$ mysql -specialuser' -h10.300.300.400 databaseV105 -p

पास वर्ड दर्ज करें:


0

यदि आपका dbname, उपयोगकर्ता नाम, पासवर्ड, इत्यादि तार की लंबाई https://dev.mysql.com/doc/refman/5.7/en/grant-tables.html#grant-tables-scope-column-properties पर उल्लिखित मानों से अधिक है , तो आप यह भी लॉग इन करने में विफल हो सकता है, क्योंकि यह मेरे मामले में था।


0

आजकल! के लिए समाधान:

MySQL ERROR 1045 (28000): उपयोगकर्ता के 'उपयोगकर्ता' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES) के लिए प्रवेश निषेध है;

Wampserver 3.2.0 नया इंस्टालेशन या उन्नयन

संभवतः डिफ़ॉल्ट रूप में xampउपयोग mariaDBकरना अच्छी तरह से है।

Wampसर्वर के साथ आता है mariaDBऔर mysql, और instalingmariaDB 3306 पोर्ट पर डिफ़ॉल्ट के रूप में और 3307 पर mysql, पोर्ट कभी-कभी 3308।

जुड़े mysql !

इंस्टालेशन पर यह उपयोग करने के लिए कहता है mariaDBया MySql, लेकिन mariaDB को डिफ़ॉल्ट के रूप में जांचा जाता है और आप इसे बदल नहीं सकते हैं, जांचेंmysql विकल्प की और इंस्टॉल करें।

जब instalation किया जाता है तो दोनों mariaDBडिफ़ॉल्ट पोर्ट 3306 और पर चलेंगेmysql दूसरे पोर्ट 3307 या 3308 पर चलेंगे।

wampserverआइकन पर राइट क्लिक करें जहां इसकी रनिंग राइट बॉटम कॉर्नर, गोटो टूल पर होनी चाहिए और अपना सही देखेंmysql रनिंग पोर्ट को देखें।

और इसे अपने डेटाबेस कनेक्शन में समान रूप से शामिल करें:

$host = 'localhost';
$db   = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
$port = '3308';//Port

$dsn = "mysql:host=$host;dbname=$db;port=$port;charset=$charset"; //Add in connection
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
try {
     $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

Note : मैं पोदो का उपयोग कर रहा हूं।

और अधिक के लिए यहाँ देखें: https://sourceforge.net/projects/wampserver/


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