【问题标题】:can't connect to mysql using nodejs无法使用nodejs连接到mysql
【发布时间】:2018-03-08 00:32:59
【问题描述】:

我是 nodejs 新手,在创建与数据库的连接时出现此错误

C:\Users\devashis khandelwal\node_modules\mysql\lib\protocol\Parser.js:80 抛出错误; // 重新抛出非 MySQL 错误 ^

错误:ER_ACCESS_DENIED_ERROR:用户访问被拒绝 'Root'@'localhost'(使用密码:YES) 在 Handshake.Sequence._packetToError (C:\Users\devashis khandelwal\node_modules\mysql\lib\protocol\sequences\Sequence.js:52:14) 在 Handshake.ErrorPacket (C:\Users\devashis khandelwal\node_modules\mysql\lib\protocol\sequences\Handshake.js:103:18) 在 Protocol._parsePacket (C:\Users\devashis khandelwal\node_modules\mysql\lib\protocol\Protocol.js:279:23) 在 Parser.write (C:\Users\devashis khandelwal\node_modules\mysql\lib\protocol\Parser.js:76:12) 在 Protocol.write (C:\Users\devashis khandelwal\node_modules\mysql\lib\protocol\Protocol.js:39:16) 在套接字。 (C:\Users\devashis khandelwal\node_modules\mysql\lib\Connection.js:103:28) 在 emitOne (events.js:96:13) 在 Socket.emit (events.js:188:7) 在 readableAddChunk (_stream_readable.js:176:18) 在 Socket.Readable.push (_stream_readable.js:134:10) -------------------- 在 Protocol._enqueue (C:\Users\devashis khandelwal\node_modules\mysql\lib\protocol\Protocol.js:145:48) 在 Protocol.handshake (C:\Users\devashis khandelwal\node_modules\mysql\lib\protocol\Protocol.js:52:23) 在 Connection.connect (C:\Users\devashis khandelwal\node_modules\mysql\lib\Connection.js:130:18) 在对象。 (C:\Users\devashis khandelwal\node 文件\demo_db_connection.js:9:5) 在 Module._compile (module.js:570:32) 在 Object.Module._extensions..js (module.js:579:10) 在 Module.load (module.js:487:32) 在 tryModuleLoad (module.js:446:12) 在 Function.Module._load (module.js:438:3) 在 Module.runMain (module.js:604:10)

var mysql = require('mysql');

var con = mysql.createConnection({
   host     : 'localhost',
  user     : 'Root',
  password : 'my_pass',
});

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

【问题讨论】:

    标签: javascript mysql node.js cmd server


    【解决方案1】:

    您正在与用户Root 连接,我相信它是root。您的错误显然是凭据错误。

    【讨论】:

      【解决方案2】:

      错误:ER_ACCESS_DENIED_ERROR:由于权限而发生。

      据我了解您的上述代码,您需要将 Root 更改为 root

      var mysql = require('mysql');
      
      var con = mysql.createConnection({
         host     : 'localhost',
        user     : 'root',
        password : 'my_pass',
      });
      
      con.connect(function(err) {
        if (err) throw err;
        console.log("Connected!");
      });
      

      【讨论】:

        【解决方案3】:

        有一个类似的问题,我可以使用具有相同凭据的 CLI 登录,但在 nodejs (mysql-server 8.0) 中无法使用 mysql2。通过使用% 代替localhost 解决了这个问题:

        CREATE USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
        GRANT ALL PRIVILEGES ON db.* TO 'user'@'%';
        

        而不是

        CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
        GRANT ALL PRIVILEGES ON db.* TO 'user'@'localhost';
        

        【讨论】:

          猜你喜欢
          • 2017-09-17
          • 1970-01-01
          • 2014-11-06
          • 1970-01-01
          • 2014-10-18
          • 2014-04-04
          • 2015-07-04
          • 2022-01-18
          • 2010-10-14
          相关资源
          最近更新 更多