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




mysql eclipse (10)

ग्रहण में जब मैंने अपना आवेदन शुरू किया तो मुझे यह मिला - उपयोग करने के लिए बोली की खोज नहीं कर सका। 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 8.0.4 से शुरू करते हुए, उन्होंने mySQL सर्वर के लिए डिफ़ॉल्ट प्रमाणीकरण प्लगइन को mysql_native_password से caching_sha2_password में बदल दिया है

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

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

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

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


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

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

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


आपको अपने पुराने कनेक्टर को हटाने और नया संस्करण डाउनलोड करने की आवश्यकता है (mysql-कनेक्टर-जावा-5.1.46)


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


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

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

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


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

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


मैं इस समस्या में भाग गया जब इस मुरच 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 के लिए, मैंने इसे उपयोगी पाया।


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


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


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

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