java प्रमाणीकरण प्लगइन 'caching_sha2_password' समस्या को लोड करने में असमर्थ को कैसे हल करें




mysql eclipse (12)

मैं mysql 8.0.12 का उपयोग कर रहा हूं और mysql-कनेक्टर को mysql-कनेक्टर-java-8.0.12 में अपडेट करके मेरे लिए समस्या हल कर दी है।

आशा है कि यह किसी की मदद करता है।

ग्रहण में जब मैंने अपना आवेदन शुरू किया तो मुझे यह मिला - उपयोग करने के लिए बोली की खोज नहीं कर सका। java.sql.SQLException: प्रमाणीकरण प्लगइन 'caching_sha2_password' को लोड करने में असमर्थ।

java.sql.SQLException पर: प्रमाणीकरण प्लगइन लोड करने में असमर्थ 'caching_sha2_password'। कॉम पर। java: 1746) पर com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.java:1226) com.mysql.jdbc.Connection.mpl.coreConnect (ConnectionImpl.java:2191) पर com.mysql.jp.lq.ld.c ConnectOneTryOnly (ConnectionImpl.java:2222) com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2017) पर com.mysql.jdbc.ConnectionImpl (ConnectionImpl.java:779779) पर संपर्क करें। .JDBC4Connection। (JDBC4Connection.java:47) सूरज में। java.lang.reflect.Constructor.newInstance (अज्ञात स्रोत) पर com.mysql.jdbc.Util.handleNewInstance (Util.java:425) t। com.mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:389) at com.mysql.jdbc.NonRegisteringDriver .connect (nonRegisteringDriver.java:330) java.sql.Driverman.DriverManDriman.jd. java.sql.DriverManager.getConnection (अज्ञात स्रोत) पर ch.qos.logback.core.db.DriverManagerConnectionSource.getConnection (DriverManagerConnectionSource.java:54) पर ch.qos.logback.core.db.ConnectionSourceBase.discharge। .java: 46) पर ch.qos.logback.core.db.riverManagerConnectionSource.start (DriverManagerConnectionSource.java:38) पर ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end (NestedComplexPropertyIA.com) ) पर ch.qos.logback.core.joran.spi.Interpreter.callEndAction (Interpreter.java:309) पर ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.java:193) बजे प्रवेश करें। ch.qos.logback.core.joran.spi.Interpreter.endElement (Interpreter.java:179) पर ch.qos.logback.core.joran.spi.vent.layer.play (EventPl) पर anyer.java:62) पर ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.java:165) पर ch.qos.logback.core.joran.Goric.onfigurator.doConfigur.do at ch.qos.logback.core.joran.GenericConfigurator.doConfigure (GenericConfigurator.java:110) पर ch.qos.logback .core .joran.GenericConfigurator.doConfigure (GenericConfigurator) logback.classic.util.ContextInitializer.configureByResource (ContextInitializer.java:75) पर ch.qos.logback.classic.util.CettextInitializer.autoConfig (ContextInitializer.java:150) को ऑर्गेनिक स्थानों पर स्थित हैं। StaticLoggerBinder.java:84 पर org.slf4j.impl.StaticLgergerBinder (StaticLoggerBinder.java:55) org.slf4j.LergerFactory.bind (LoggerFactory.java:150) पर org.slf4j.LoggerF.jpg .java: 124) org.slf4j.LoggerFactory.getILoggerFactory (LoggerFactory.java:412) पर ch.qos.logback.classic.util.StususViaSLF4JLoggerFactory.addSta पर। tus (StatusViaSLF4JLoggerFactory.java:32) पर ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo (स्थितिViaSLF4JLoggerFactory.java:20) पर ch.qos.log/blogsclogsclog/clogos.cl/ 32) पर org.apache.catalina.core.StandardContext.startInternal (StandardContext.java) 245 पर org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) org.apache.catalina पर। core.ContainerBase $ StartChild.call (कंटेनerBase.java:1421) at org.apache.catalina.core.ContainerBase $ StartChild.call (कंटेनरबेज .java: 1411) java.util.concurrent.Future.askun (अज्ञात स्रोत पर) ) java.util.concurrent.ThreadPoolExecutor.runWorker (अज्ञात स्रोत) पर java.util.concurrent.ThreadPoolExecutor $ Worker.run (अज्ञात स्रोत) पर java.lang.Thread.run (अज्ञात स्रोत) पर।


अपने mysql- कनेक्टर "लिबास पैकेज को अपने mysql वर्जन के साथ अपग्रेड करें जैसे मैं नीचे 8.0.13 वर्जन का उपयोग कर रहा हूं और पोम में मैंने वर्जन को बदल दिया है:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>8.0.13</version>
</dependency>

मेरी समस्या इसके बाद हल हो गई है।


मुझे लगता है कि आपके "mysql-कनेक्टर" काम के पैकेज को अपडेट करना बेहतर है, इसलिए डेटाबेस अभी भी अधिक सुरक्षित हो सकता है।

मैं संस्करण 8.0.12 के mysql का उपयोग कर रहा हूं। जब मैंने mysql-कनेक्टर-जावा को संस्करण 8.0.11 में अपडेट किया, तो समस्या दूर हो गई।


कनेक्ट .jar फ़ाइल को हटाएं यदि आपने कई संस्करण कनेक्टर जार फ़ाइल जोड़ी है तो केवल कनेक्टर जार फ़ाइल जोड़ें जो आपके एसक्यूएल संस्करण के साथ मेल खाती है।


यदि आप अपने कनेक्टर को एक संस्करण में अपडेट कर सकते हैं, जो MySQL 8 के नए प्रमाणीकरण प्लगइन का समर्थन करता है, तो ऐसा करें। यदि वह किसी कारण से विकल्प नहीं है, तो अपने डेटाबेस उपयोगकर्ता के मूल प्रमाणीकरण विधि को मूल में बदलें।


मैं एक स्प्रिंग बूट ऐप में इस त्रुटि को मार रहा था, लेकिन दूसरे में नहीं। अंत में, मैंने पाया कि काम न करने वाला स्प्रिंग बूट संस्करण 2.0.0 था। कृपया और जो काम कर रहा था वह 2.0.1 था। कृपया। जिसके कारण MySQL कनेक्टर - 5.1.45 बनाम 5.1.46 में अंतर आया। मैंने उस ऐप के लिए स्प्रिंग बूट संस्करण को अपडेट किया जो स्टार्टअप में इस त्रुटि को फेंक रहा था और अब यह काम करता है।


दूसरा कारण यह हो सकता है कि आप गलत पोर्ट की ओर इशारा कर रहे हैं।

सुनिश्चित करें कि आप वास्तव में सही SQL सर्वर की ओर इशारा कर रहे हैं। आपके पास 3306 पर चलने वाली MySQL की डिफ़ॉल्ट स्थापना हो सकती है लेकिन आपको वास्तव में एक अलग MySQL उदाहरण की आवश्यकता हो सकती है।

बंदरगाहों की जाँच करें और db के खिलाफ कुछ क्वेरी चलाएँ।


हो सकता है आप गलत mysql_connector का उपयोग कर रहे हों।

उसी mysql वर्जन के कनेक्टर का उपयोग करें


MySQL 8.0.4 से शुरू करते हुए, उन्होंने mySQL सर्वर के लिए डिफ़ॉल्ट प्रमाणीकरण प्लगइन को mysql_native_password से caching_sha2_password में बदल दिया है

आप समस्या को हल करने के लिए नीचे कमांड चला सकते हैं।

नमूना उपयोगकर्ता नाम / पासवर्ड => छात्र / पास १२

ALTER USER 'student'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass123';

विवरण के लिए आधिकारिक पृष्ठ देखें: MySQL संदर्भ मैनुअल


आप नए MySQL संस्करण के साथ समस्या कर रहे हैं जो "caching_sha2_password" प्लगइन के साथ आया था, इसे हल करने के लिए नीचे दिए गए आदेश का पालन करें।

DROP USER 'your_user_name'@'%';
CREATE USER 'your_user_name'@'%' IDENTIFIED WITH mysql_native_password BY 'your_user_password';
GRANT ALL PRIVILEGES ON your_db_name.* TO 'your_user_name'@'%' identified by 'your_user_password';

या आप अपने विशेषाधिकारों को रखने के लिए बस नीचे दिए गए आदेश का उपयोग कर सकते हैं:

ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;

मैंने नीचे दी गई निर्भरता का उपयोग करते हुए ठीक यही मुद्दा दिया था:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.44</version>
</dependency>

मैं सिर्फ संस्करण 46 में बदलता हूं और सब कुछ काम करता है।


मैं इस समस्या में भाग गया जब इस मुरच JSP पुस्तक से तैयार परियोजना के साथ काम कर रहा था। MySQL 8.0.13 डेटाबेस के साथ 5.1.23 कनेक्टर J का उपयोग करके समस्या उत्पन्न हुई थी। मुझे पुराने ड्राइवर को एक नए के साथ बदलने की आवश्यकता थी। कनेक्टर जे को डाउनलोड करने के बाद, इसने तीन कदम उठाए।

NetBeans प्रोजेक्ट कनेक्टर J को कैसे बदलें:

  1. वर्तमान कनेक्टर J को here से डाउनलोड here । फिर इसे अपने ओएस में कॉपी करें।

  2. NetBeans में, प्रोजेक्ट टैब के बगल में मौजूद फाइल टैब पर क्लिक करें। Mysql-कनेक्टर-java-5.1.23.jar या आपके पास जो भी पुराना कनेक्टर है उसे ढूंढें। इस पुराने कनेक्टर को हटा दें। नए कनेक्टर में पेस्ट करें।

  3. प्रोजेक्ट्स टैब पर क्लिक करें। लाइब्रेरी फ़ोल्डर में नेविगेट करें। पुराने mysql कनेक्टर को हटाएं। लाइब्रेरी फ़ोल्डर पर राइट क्लिक करें। जोड़ें जार / फ़ोल्डर का चयन करें। उस स्थान पर नेविगेट करें जहां आपने नया कनेक्टर लगाया है, और खुले का चयन करें।

  4. प्रोजेक्ट टैब में, प्रोजेक्ट पर राइट क्लिक करें। पॉपअप मेनू के निचले भाग पर डेटा स्रोत का चयन करें। ऐड कनेक्शन पर क्लिक करें। इस बिंदु पर नेटबीन्स आगे की ओर झुक जाता है और यह मान लेता है कि आप पुराने कनेक्टर का उपयोग करना चाहते हैं। वापस जाने के लिए वापस बटन पर क्लिक करें। पुराने कनेक्टर को निकालें, और नया कनेक्टर जोड़ें। यह सुनिश्चित करने के लिए अगला और परीक्षण कनेक्शन क्लिक करें कि यह काम करता है।

वीडियो संदर्भ के लिए, मैंने इसे उपयोगी पाया। IntelliJ IDEA के लिए, मैंने इसे उपयोगी पाया।