title: NodeJS/mySQL - ER_ACCESS_DENIED_ERROR Access denied for user 'root'@'localhost' (using password: YES)
body: <p>I am attempting to connect to mySQL through a NodeJS file, but I receive the following error:</p>
  
  <pre><code>{ Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'localhost' (using password: YES)
      at Handshake.Sequence._packetToError (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/sequences/Sequence.js:30:14)
      at Handshake.ErrorPacket (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/sequences/Handshake.js:67:18)
      at Protocol._parsePacket (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:197:24)
      at Parser.write (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Parser.js:62:12)
      at Protocol.write (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:37:16)
      at Socket.ondata (_stream_readable.js:555:20)
      at emitOne (events.js:101:20)
      at Socket.emit (events.js:188:7)
      at readableAddChunk (_stream_readable.js:176:18)
      at Socket.Readable.push (_stream_readable.js:134:10)
      --------------------
      at Protocol._enqueue (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:110:26)
      at Protocol.handshake (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:42:41)
      at Connection.connect (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/Connection.js:81:18)
      at Connection._implyConnect (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/Connection.js:222:10)
      at Connection.query (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/Connection.js:137:8)
      at Object.&lt;anonymous&gt; (/home/matthew/Node/mySqlTest/index.js:11:12)
      at Module._compile (module.js:570:32)
      at Object.Module._extensions..js (module.js:579:10)
      at Module.load (module.js:487:32)
      at tryModuleLoad (module.js:446:12)
    code: 'ER_ACCESS_DENIED_ERROR',
    errno: 1045,
    sqlState: '28000',
    fatal: true }
  </code></pre>
  
  <p>The weird thing is that I can connect fine through the terminal by running <code>mysql -u root -p</code>. I only get this error when running my javascript. I have been all over Google and StackOverflow, but still have not found a solution that works. I am using MySQL 5.7.16 on Ubuntu 16.04.1 on a VIRTUAL MACHINE. Not sure if a VM makes a difference here. My Javascript code is below:</p>
  
  <pre><code>'use strict';                                                                                                                                      
  
  var mysql = require('mysql');
  
  var connection = mysql.createConnection({
      host: 'localhost',
      user: 'root',
      password: 'password'
  });
  
  connection.query(
      'SELECT "foo" AS first_field, "bar" AS second_field',
      function(err, results, fields) {
          console.log(err);
          console.log(results);
          connection.end();
      }
  );
  </code></pre>
  
  <p>I have tried using 'locahost' as well as '127.0.0.1' in my javascript. I have a 'root' user for both 'localhost' and '127.0.0.1' in mySql.user table and I am able to see this by executing <code>SELECT user, host FROM mysql.user WHERE user='root';</code></p>
  
  <p>I have added privileges to 'root' user by executing this:</p>
  
  <pre><code>GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';
  </code></pre>
  
  <p>I ran the above on 127.0.0.1 as well. I have also tried this:</p>
  
  <pre><code>GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
  </code></pre>
  
  <p>I have attempted to reset the root password like this:
  <a href="https://help.ubuntu.com/community/MysqlPasswordReset" rel="noreferrer">https://help.ubuntu.com/community/MysqlPasswordReset</a></p>
  
  <p>I have run <code>FLUSH PRIVILEGES</code> after each attempt. I've stopped and restarted mySQL. I have uninstalled mySQL completely and reinstalled.</p>
  
  <p>All to no avail. I receive the access denied error every time I try to run the javascript, but I have absolutely no issues when I connect to mySQL via the terminal.</p>
  
  <p>Any ideas?</p>