MySQL 8.0 - क्लाइंट सर्वर द्वारा अनुरोध किए गए प्रमाणीकरण प्रोटोकॉल का समर्थन नहीं करता है; MySQL क्लाइंट को अपग्रेड करने पर विचार करें


272

मैं किसी कारण से सर्वर से एक साधारण संबंध नहीं बना सकता। मैं डिफ़ॉल्ट सेटिंग्स के साथ Node.JS के साथ नवीनतम MySQL सामुदायिक 8.0 डेटाबेस स्थापित करता हूं।

यह मेरा नोड.जेएस कोड है

    var mysql = require('mysql');

    var con = mysql.createConnection({
      host: "localhost",
      user: "root",
      password: "password",
      insecureAuth : true
    });

    con.connect(function(err) {
      if (err) throw err;
      console.log("Connected!");
    });

नीचे कमांड प्रॉम्प्ट में पाई गई त्रुटि है:

C:\Users\mysql-test>node app.js
    C:\Users\mysql-test\node_modules\mysql\lib\protocol\Parse
    r.js:80
            throw err; // Rethrow non-MySQL errors
            ^

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at Handshake.Sequence._packetToError (C:\Users\mysql-
test\node_modules\mysql\lib\protocol\sequences\Sequence.js:52:14)
    at Handshake.ErrorPacket (C:\Users\mysql-test\node_mo
dules\mysql\lib\protocol\sequences\Handshake.js:130:18)
    at Protocol._parsePacket (C:\Users\mysql-test\node_mo
dules\mysql\lib\protocol\Protocol.js:279:23)
    at Parser.write (C:\Users\mysql-test\node_modules\mys
ql\lib\protocol\Parser.js:76:12)
    at Protocol.write (C:\Users\mysql-test\node_modules\m
ysql\lib\protocol\Protocol.js:39:16)
    at Socket.<anonymous> (C:\Users\mysql-test\node_modul
es\mysql\lib\Connection.js:103:28)
    at Socket.emit (events.js:159:13)
    at addChunk (_stream_readable.js:265:12)
    at readableAddChunk (_stream_readable.js:252:11)
    at Socket.Readable.push (_stream_readable.js:209:10)
    --------------------
    at Protocol._enqueue (C:\Users\mysql-test\node_module
s\mysql\lib\protocol\Protocol.js:145:48)
    at Protocol.handshake (C:\Users\mysql-test\node_modul
es\mysql\lib\protocol\Protocol.js:52:23)
    at Connection.connect (C:\Users\mysql-test\node_modul
es\mysql\lib\Connection.js:130:18)
    at Object.<anonymous> (C:\Users\mysql-test\server.js:
11:5)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
at Function.Module.runMain (module.js:701:10)

मैंने कुछ चीजों पर पढ़ा है जैसे: https://dev.mysql.com/doc/refman/5.5/en/old-client.html https://github.com/mysqljs/mysql/issues/1507

लेकिन मुझे अभी भी यकीन नहीं है कि मेरी समस्या को कैसे ठीक किया जाए। किसी भी मदद की सराहना की जाएगी: डी


2
सभी वीएस कोड उपयोगकर्ता जो SQLTools एक्सटेंशन का उपयोग करते हैं, उन्हें इस पद का संदर्भ देना चाहिए, यदि वे इससे परेशान हैं, खासकर यदि आपने अपने विकास कंप्यूटर पर सिर्फ एक mysql उदाहरण को अपग्रेड किया है
OzzyTheGiant

जवाबों:


677

MYSQL कार्यक्षेत्र में निम्नलिखित क्वेरी निष्पादित करें

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

जहां rootआपका उपयोगकर्ता localhostआपके URL के passwordरूप में और आपके पासवर्ड के रूप में

फिर विशेषाधिकार को ताज़ा करने के लिए इस क्वेरी को चलाएं:

flush privileges;

ऐसा करने के बाद नोड का उपयोग करके कनेक्ट करने का प्रयास करें।

यदि वह काम नहीं करता है, तो बिना @'localhost'भाग के प्रयास करें ।


47
इसने मेरे लिए काम किया। के flush privileges;बाद मत भूलना ।
अली हेसारी

12
इसने मेरे बिना @localhost के लिए काम किया (मुझे लगता है कि यह हो सकता है क्योंकि यह रूट उपयोगकर्ता के लिए नहीं था)
निकोलसज़

10
यदि आप इसे जानते हैं तो 'पासवर्ड' को अपने रूट पासवर्ड से बदलें
वेधा पेरी

11
यह काम करता है ...... लेकिन यह पहले क्यों काम नहीं कर रहा था और इस क्वेरी के बाद क्यों काम किया यह अभी भी एक सवाल है।
नक्षत्र

9
हाय @GuilhermeMatuella यह इसलिए है क्योंकि caching_sha2_passwordMySQL 8.0 में पेश किया गया था, लेकिन Node.js संस्करण अभी तक लागू नहीं किया गया है।
दक्ष गर्गस

106

आइए पहले यह स्पष्ट करें कि क्या चल रहा है।

MySQL 8 में प्लग करने योग्य प्रमाणीकरण विधियों का समर्थन है। डिफ़ॉल्ट रूप से, उनमें से एक नाम caching_sha2_passwordका उपयोग हमारे अच्छे पुराने mysql_native_password( स्रोत ) के बजाय किया जाता है । यह स्पष्ट होना चाहिए कि कई हैंडशेक के साथ एक क्रिप्टो एल्गोरिथ्म का उपयोग करना सादे पासवर्ड पासिंग की तुलना में अधिक सुरक्षित है जो 24 वर्षों से वहां है !

अब, समस्या mysqljsनोड ( npm i mysqlआपके द्वारा अपने नोड कोड में उपयोग किया गया पैकेज) के साथ है और अभी तक MySQL 8 के इस नए डिफ़ॉल्ट प्रमाणीकरण विधि का समर्थन नहीं करता है। मुद्दा यहाँ है: https://github.com/mysqljs/mysql/issues/1507 और अभी भी खुला है, 3 साल बाद, जुलाई 2019 तक।

: (अद्यतन जून 2019 वहाँ एक है नई पीआर mysqljs में अब इसे ठीक करने के लिए! ) (2020 अद्यतन फरवरी: जाहिर है यह है mysqljs का संस्करण 3 में आने के लिए अनुसूचित)

आपके विकल्प

विकल्प 1) अच्छे पुराने "native_password" का उपयोग करके प्रमाणित करने के लिए "MySQL" को डाउनग्रेड करें

यहाँ हर कोई सुझाव देता है (उदाहरण के लिए ऊपर का उत्तर )। आप बस mysqlयह कहते हैं कि एक प्रश्न के लिए rootपुराने native_passwordतरीके का उपयोग करके ठीक है

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password ...

अच्छी बात यह है कि, जीवन सरल होने जा रहा है और आप अभी भी किसी भी मुद्दे के बिना सीक्वेल प्रो जैसे अच्छे पुराने उपकरणों का उपयोग कर सकते हैं । लेकिन समस्या यह है, आप अपने लिए उपलब्ध सामान को अधिक सुरक्षित (और शांत, नीचे पढ़ें) का लाभ नहीं ले रहे हैं।

विकल्प 2) "नोड" पैकेज को MySQL कनेक्‍टर X DevAPI से बदलें

नोड के लिए MySQL एक्स देवापि करने के लिए एक प्रतिस्थापन है नोड के Mysqljs पैकेज , द्वारा प्रदान की http://dev.mysql.com आधिकारिक लोग।

यह एक चार्मिंग सपोर्टिंग caching_sha2_passwordऑथेंटिकेशन की तरह काम करता है । (बस सुनिश्चित करें कि आप एक्स प्रोटोकॉल कम्यूटेंस के33060 लिए पोर्ट का उपयोग करें ।)

बुरी बात यह है कि आपने हमारे पुराने mysqlपैकेज को छोड़ दिया है, जिसका उपयोग सभी को करने और उस पर निर्भर रहने के लिए किया जाता है।

अच्छी बात यह है कि, आपका ऐप अब अधिक सुरक्षित है और आप एक टन नई चीजों का लाभ उठा सकते हैं जो हमारे अच्छे पुराने दोस्तों ने प्रदान नहीं की हैं! बस एक्स देवपीआई के ट्यूटोरियल की जांच करें और आप देखेंगे कि इसमें एक टन नई सेक्सी विशेषताएं हैं जो काम में आ सकती हैं। आपको बस एक सीखने की अवस्था की कीमत का भुगतान करने की आवश्यकता है, जो अपेक्षित रूप से किसी भी प्रौद्योगिकी उन्नयन के साथ आता है। :)

पुनश्च। दुर्भाग्य से, इस XDevAPI पैकेज में अभी तक टाइप डेफिनिशन (टाइपस्क्रिप्ट द्वारा समझने योग्य) नहीं है, इसलिए यदि आप टाइपस्क्रिप्ट पर हैं, तो आपको समस्याएं होंगी। मैंने .d.ts का उपयोग करने dts-genऔर उत्पन्न करने की कोशिश की dtsmake, लेकिन कोई सफलता नहीं मिली। इसलिए इस बात का ध्यान रखें।

चीयर्स!


3
एक साल पुराने प्रश्न के लिए एक विस्तृत उत्तर पोस्ट करने के लिए धन्यवाद। :]
दक्ष गरगस

3
अच्छा, एक जवाब जो वास्तव में mysql_native_password बताता है बजाय इसके कि आप इसे करने के लिए
कहें

1
हाँ, एक बार के लिए एक उचित स्पष्टीकरण। आप पर अच्छा है एडिन मेरी इच्छा है कि कनेक्ट करने वाले एप्लिकेशन MySQL में पोर्ट 3306 को स्वचालित रूप से कॉन्फ़िगर न करें। हमें MySQL और MariaDB 3306 से दूर करने के लिए पर्याप्त परेशानी है।
ट्रंक

ओरेकल प्लगइन्स से सावधान रहें, आपको एक बड़ा जुर्माना लग सकता है: theregister.co.uk/2019/10/04/oracle_virtualbox_merula
Juha Untinen

यह एक उत्कृष्ट उत्तर है और अधिक उत्थान के योग्य है!
जून वेनस्टोन

82

पुराने mysql_native_passwordकार्यों का उपयोग करना :

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourRootPassword';
-- or
CREATE USER 'foo'@'%' IDENTIFIED WITH mysql_native_password BY 'bar';
-- then
FLUSH PRIVILEGES;

ऐसा इसलिए है क्योंकि caching_sha2_passwordMySQL 8.0 में पेश किया गया है, लेकिन Node.js संस्करण अभी तक लागू नहीं हुआ है। आप इस पुल अनुरोध और अधिक जानकारी के लिए इस समस्या को देख सकते हैं । शायद जल्द ही एक फिक्स आएगा!


एक आकर्षण की तरह काम करते हैं। जान में जान आई!
टोपी

@localhost और सिर्फ 'रूट' को जोड़ने में क्या अंतर है
filemonczyk

क्वेरी काम करती है। लेकिन फिर भी नोड MySQL सर्वर से कनेक्ट नहीं हो सका। कोई उपाय? यहाँ त्रुटि है, {"कोड": "ER_ACCESS_DENIED_ERROR", "इरनो": 1045, "sqlMessage": "उपयोगकर्ता के लिए अस्वीकृत 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: YES)", "sqlState": "28000" , "घातक": सच}
संजय प्रदीप

26

MySQL 8 के लिए पूर्ण चरण

MySQL से कनेक्ट करें

$ mysql -u root -p
Enter password: (enter your root password)

अपना पासवर्ड रीसेट करें

( your_new_passwordउस पासवर्ड से बदलें जिसे आप उपयोग करना चाहते हैं)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
mysql> FLUSH PRIVILEGES;
mysql> quit

फिर नोड का उपयोग करके कनेक्ट करने का प्रयास करें


@sky विवरण के लिए मेरे उत्तर को ऊपर देखें।
ऐदीन

1
@ एडिन थैंक्स, यह बहुत मददगार है।
स्काई

17

हालाँकि स्वीकृत उत्तर सही है, मैं एक नया उपयोगकर्ता बनाना पसंद करूँगा और फिर डेटाबेस तक पहुँचने के लिए उस उपयोगकर्ता का उपयोग करूँगा।

create user nodeuser@localhost identified by 'nodeuser@1234';
grant all privileges on node.* to nodeuser@localhost;
ALTER USER 'nodeuser'@localhost IDENTIFIED WITH mysql_native_password BY 'nodeuser@1234';

2
यदि कोई इस मार्ग पर जाना चाहता है, तो यहां कुछ स्पष्टीकरण के साथ एक लेख दिया गया है: digitalocean.com/community/tutorials/…
Devin

12

यदि आप इस त्रुटि का सामना करते हैं, लेकिन फिर भी MySQLसंस्करण 8 का उपयोग करना चाहते हैं । आप MySQL सर्वर से यह कहकर इसे प्राप्त कर सकते हैं कि आप डेटाबेस का उपयोग करते समय विरासत प्रमाणीकरण प्लगइन का उपयोग करें Docker

तो, आपकी composeफ़ाइल इस तरह दिखाई देगी:

# Use root/example as user/password credentials

version: '3.1'

services:

  db:
    image: mysql:8.0.15
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
       MYSQL_ROOT_PASSWORD: 'pass'
       MYSQL_DATABASE: 'db'
       MYSQL_USER: 'user'
       MYSQL_PASSWORD: 'pass'
    ports:
      - 3318:3306
    # Change this to your local path
    volumes:
      - ~/Database/ORM_Test:/var/lib/mysql

मैं इसका उपयोग कर रहा हूं command, लेकिन फिर भी mysqlNode.js में उपयोग करते समय असमर्थित प्रमाणीकरण त्रुटि संदेश मिल रहा है
Juha Untinen

पूर्ण स्टैकट्रेस यहाँ है: pastebin.com/SzayQzdh और docker-compose.yml : pastebin.com/7pUrWYDs त्रुटि स्वयं है:Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
Juha Untinen

1
@JuhaUntinen सुनिश्चित करें कि आपने एक डॉकटर कंटेनर (डॉकटर-कंपोज़ द्वारा बनाया गया) और वॉल्यूम (~ / डेटाबेस / ORM_Test) को हटा दिया है और फिर 'डूकर-कंपोज़ अप' चलाएं। अन्यथा 'कमांड' से परिवर्तन लागू नहीं होंगे। इसने मेरे मामले में मदद की।
विटालि इवानोव

11

मैसूर नवीनतम डॉकटर कंटेनर में

ALTER USER root IDENTIFIED WITH mysql_native_password BY 'password';

9

यदि USER ... कमांड लाइन आपके लिए काम नहीं करती है और यदि आप विंडोज 10 का उपयोग कर रहे हैं, तो उन चरणों का पालन करने का प्रयास करें:

1) विंडोज़ सर्च बार में MySQL टाइप करें

2) MySQL विंडोज इंस्टॉलर - समुदाय खोलें

3) "MySQL सर्वर" के लिए देखें और Reconfigure पर क्लिक करें चरण 3

4) "अगला" पर क्लिक करें जब तक आप "प्रमाणीकरण विधि" चरण तक नहीं पहुंच जाते

5) "प्रमाणीकरण विधि" चरण पर दूसरे विकल्प की जाँच करें "लिगेसी प्रमाणीकरण विधि का उपयोग करें" चरण 5

6) फिर विंडोज इंस्टॉलर द्वारा दिए गए चरणों का पालन करें

7) जब यह पूरा हो जाए, तो विंडोज सर्च बार से "सर्विसेज" पर जाएं, "स्टार्ट" MySql81 पर क्लिक करें।

अब, फिर से प्रयास करें, MySQL और Node.js के बीच कनेक्शन काम करना चाहिए!


4

MySQL 8.0 में, के caching_sha2_passwordबजाय डिफ़ॉल्ट प्रमाणीकरण प्लगइन हैmysql_native_password. ...

से प्रमाणीकरण तंत्र के लिए एक ढाल में यह सवाल परिणाम में जवाब में से अधिकांश caching_sha2_passwordके लिए mysql_native_password। सुरक्षा के दृष्टिकोण से, यह काफी निराशाजनक है।

यह दस्तावेज़ बड़े पैमाने पर चर्चा करता है caching_sha2_passwordऔर निश्चित रूप से यह प्रमाणीकरण विधि को डाउनग्रेड करने के लिए पहली पसंद क्यों नहीं होना चाहिए।

इसके साथ, मेरा मानना ​​है कि एडिन का उत्तर स्वीकृत उत्तर होना चाहिए। प्रमाणीकरण विधि को डाउनग्रेड करने के बजाय, एक कनेक्टर का उपयोग करें जो इसके बजाय सर्वर के संस्करण से मेल खाता है।


3

मूल दस्तावेज आप यहां पा सकते हैं: https://dev.mysql.com/doc/dev/connector-nodejs/8.0/

'use strict';

const mysqlx = require('@mysql/xdevapi');

const options = {
  host: 'localhost',
  port: 33060,
  password: '******',
  user: 'root',
  schema: 'yourconference'
};

mysqlx.getSession(options)
  .then(session => {
          console.log(session.inspect());
           session.close();
  }).catch(err => {
    console.error(err.stack);
    process.exit(1);
  });

यह अधिक जटिल लग रहा है, लेकिन मुझे लगता है कि हमें आधिकारिक गाइड का पालन करना चाहिए! b
जुनेगॉन्ग ओह

3

मेरे पास सर्वर पर MYSQL और दूसरे सर्वर पर नोडज एप्लिकेशन है

MYSQL कार्यक्षेत्र में निम्नलिखित क्वेरी निष्पादित करें

'USER' रूट '@'% 'mysql_native_password द्वारा' पासवर्ड 'के साथ IDENTIFIED


2

मौजूदा mysql 8.0 के लिए विंडोज 10 mysql पर स्थापित है,

(1) लॉन्च इंस्टॉलर,

(2) QuickAction (MySQL सर्वर के बाईं ओर) के तहत "पुन: कॉन्फ़िगर करें" पर क्लिक करें

(3) आने तक अगले 2 स्क्रीन के माध्यम से आगे बढ़ने के लिए क्लिक करें

(4) "ऑथेंटिकेशन मेथड" पर, "लिगेसी ऑथेंटिकेशन मेथड यूज करें (MySQL 5.x संगतता) का चयन करें"

(5) इंस्टॉल पूरा होने तक क्लिक करते रहें


2

MySQL 8+ के caching_sha2_passwordबजाय नया डिफ़ॉल्ट प्रमाणीकरण है mysql_native_password। नई और अधिक सुरक्षित प्रमाणीकरण विधि mysqlअभी तक देशी पैकेज द्वारा समर्थित नहीं है, लेकिन आपको @mysql/xdevapiइसके बजाय पैकेज का उपयोग करने पर विचार करना चाहिए , जो आधिकारिक तौर पर ओरेकल द्वारा समर्थित और बनाए रखा गया है।

नया पैकेज स्थापित करने के लिए, चलाएं:

npm install @mysql/xdevapi --save --save-exact

डेटाबेस से कनेक्ट करने के लिए और कुछ मूल्य प्राप्त करें:

const mysqlx = require('@mysql/xdevapi');
var myTable;

mysqlx
    .getSession({
        user: 'root',
        password: '*****',
        host: 'localhost',
        port: 33060
    })
    .then(function (session) {

    // Accessing an existing table
    myTable = session.getSchema('Database_Name').getTable('Table_Name');

    // Insert SQL Table data
    return myTable
        .insert(['first_name', 'last_name'])
        .values(['John', 'Doe'])
        .execute()
    });

आधिकारिक पैकेज के दस्तावेज यहां देखे जा सकते हैं: https://dev.mysql.com/doc/dev/connector-nodejs/8/5


2

यदि आप डॉकटर का उपयोग कर रहे हैं, तो यह मेरे लिए काम कर रहा है!

docker-compose.ymlनिम्नलिखित पंक्तियों को जोड़ें:

mysql:
   ...    
   command: --default-authentication-plugin=mysql_native_password
   restart: always

उसके बाद, downकंटेनर और upफिर से।


1

उपरोक्त उत्तरों के अलावा; नीचे दिए गए कमांड को निष्पादित करने के बाद

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

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

[ERROR] Column count of mysql.user is wrong. Expected 42, found 44. The table is probably corrupted

फिर व्यवस्थापक के रूप में cmd ​​में प्रयास करें; cmd में MySQL सर्वर बिन फ़ोल्डर के लिए पथ सेट करें

set path=%PATH%;D:\xampp\mysql\bin;

और फिर कमांड चलाएं:

mysql_upgrade --force -uroot -p

यह सर्वर और सिस्टम टेबल को अपडेट करना चाहिए।

तब आपको कार्यक्षेत्र में क्वेरी में नीचे दिए गए आदेशों को सफलतापूर्वक चलाने में सक्षम होना चाहिए:

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'    

फिर निम्नलिखित कमांड निष्पादित करना याद रखें:

flush privileges;

इन सभी चरणों के बाद आपके MySQL डेटाबेस से सफलतापूर्वक जुड़ने में सक्षम होना चाहिए। उम्मीद है की यह मदद करेगा...



0

अपने MySQL उपयोगकर्ता के लिए विशेषाधिकार और उपयोगकर्ता नाम / पासवर्ड की जाँच करें।

त्रुटियों को पकड़ने के लिए यह हमेशा ओवररेटेड _delegateErrorविधि का उपयोग करने के लिए उपयोगी होता है । आपके मामले में यह देखना होगा:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "password",
  insecureAuth : true
});

var _delegateError = con._protocol._delegateError;

con._protocol._delegateError = function(err, sequence) {
    if (err.fatal)
        console.trace('MySQL fatal error: ' + err.message);

    return _delegateError.call(this, err, sequence);
};

con.connect(function(err) {
  if (err) throw err;

  console.log("Connected!");
});

यह निर्माण आपको घातक त्रुटियों का पता लगाने में मदद करेगा।


0

बस कई चीजों की कोशिश करने के बाद यह पता लगा। आखिरकार मेरे लिए यह require('dotenv').config()मेरी .sequelizercफाइल में क्या शामिल था । जाहिरा तौर पर अगली कड़ी- cli एनवी चर नहीं पढ़ता है।


0

नीचे ग्रेडिंग एक अच्छा विकल्प नहीं हो सकता है:

  1. एक कारण के लिए इसका उन्नयन (बेहतर प्रमाणीकरण प्रदान करने के लिए)।
  2. इस तरह के बदलाव करने के लिए आपके पास पर्याप्त अनुमति नहीं हो सकती है।

के स्थान पर आप mysql2पैकेज का उपयोग कर सकते हैं mysql। Mysqljs के साथ संगत इसकी ज्यादातर एपीआई। साथ ही, इसमें वादों का समर्थन है।

इसका उपयोग करें जैसे: const mysql = require('mysql2/promise')

आप mysql2यहाँ के बारे में अधिक पढ़ सकते हैं : https://www.npmjs.com/package/mysql2

आशा करता हूँ की ये काम करेगा। :)


0

आप ORM, बिल्डरों इत्यादि को छोड़ सकते हैं और अपने DB / SQL प्रबंधन का उपयोग करके sqlerऔर सरल कर सकते हैं sqler-mdb

-- create this file at: db/mdb/read.table.rows.sql
SELECT TST.ID AS "id", TST.NAME AS "name", NULL AS "report",
TST.CREATED_AT AS "created", TST.UPDATED_AT AS "updated"
FROM TEST TST
WHERE UPPER(TST.NAME) LIKE CONCAT(CONCAT('%', UPPER(:name)), '%') 
const conf = {
  "univ": {
    "db": {
      "mdb": {
        "host": "localhost",
        "username":"admin",
        "password": "mysqlpassword"
      }
    }
  },
  "db": {
    "dialects": {
      "mdb": "sqler-mdb"
    },
    "connections": [
      {
        "id": "mdb",
        "name": "mdb",
        "dir": "db/mdb",
        "service": "MySQL",
        "dialect": "mdb",
        "pool": {},
        "driverOptions": {
          "connection": {
            "multipleStatements": true
          }
        }
      }
    ]
  }
};

// create/initialize manager
const manager = new Manager(conf);
await manager.init();

// .sql file path is path to db function
const result = await manager.db.mdb.read.table.rows({
  binds: {
    name: 'Some Name'
  }
});

console.log('Result:', result);

// after we're done using the manager we should close it
process.on('SIGINT', async function sigintDB() {
  await manager.close();
  console.log('Manager has been closed');
});

-1

मुझे MySQL के साथ एक ही समस्या है और मैं MySQL के साथ कनेक्ट करने के लिए XAMPP का उपयोग करके हल करता हूं और MySQL (नियंत्रण कक्ष - प्रशासनिक उपकरण - सेवाएँ) के लिए विंडोज़ में सेवाएं बंद कर देता हूं, और फ़ोल्डर में db.js (डेटाबेस के लिए जिम्मेदार) पासवर्ड खाली करें (यहाँ आप देख सकते हैं :)

const mysql = require('mysql');
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: ''
});

कृपया उस समस्या को न जोड़ें जिसे आप सामना कर रहे समस्या के जवाब के रूप में सामना कर रहे हैं
Aloy A Sen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.