anonymous123
anonymous123

Reputation: 1285

Need assistance with accessing mysql database using node.js

I am trying to run a simple node sample for access a mysql db and am getting the following error-Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'ubuntu.local' (using password: YES)

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : '192.168.0.12',
  user     : 'root',
  password : 'password',
  database : 'app'
});

connection.connect();

connection.query('SELECT * from users', function(err, rows, fields) {
  if (err) throw err;

  console.log('The solution is: ', rows[0]);
});

connection.end();

The above is the code for accessing the mysql using node.js.Any suggestions as to what I may be doing wrong, thanks in advance.

Upvotes: 5

Views: 17826

Answers (6)

Balibrera
Balibrera

Reputation: 185

The user might not have any administrative role assigned so he is not able to access the database. The user will need at least the SELECT privilege to connect.

More info here: https://dev.mysql.com/doc/workbench/en/wb-mysql-connections-navigator-management-users-and-privileges.html

Upvotes: 0

enginocal
enginocal

Reputation: 319

I had a similar problem,my nodejs project.I was using knex.js for querybuilder and it's configuration.

This problem occurs when host value is 127.0.0.1,when i changed to 127.0.0.1 to localhost,the problem is gone away.

var knex = require('knex')({
    client: 'mysql',
    connection: {
        **host: 'localhost',**
        user: 'userNew',
        password: 'password',
        database: 'appDb'
    }
});

Upvotes: 0

PsyKoPeeR
PsyKoPeeR

Reputation: 11

I've been on this problem for a long time now and among all forums I did, one simple solution resolve my issue. My password was with some special character. I change it to a simpler one like "onlyletters" and it works perfectly. Probably a encoding problem in the nodejs mysql module, I can... Hope it would help some of you guys...

Upvotes: 1

user5960462
user5960462

Reputation: 1

Actually the solution is easier than you think. Change the host to 127.0.0.1 for the database connection.

Upvotes: -1

NullPointer
NullPointer

Reputation: 555

I was getting the exact same issue. I was not able to connect via the mysql module in nodejs, but was able to connect via the mysql client in the terminal (mysql -u root -p1111 -h localhost mydb)

It turns out, the mysql module converts "localhost" to 127.0.0.1. This would not work via the (mysql -u root -p1111 -h 127.0.0.1 mydb). See Issue 734

So I had to set a password for 127.0.0.1 in MySQL and it solved the problem.

Instructions

Connect to mysql via the console:

mysql -u root -p mysql

And Run

SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('Add-Your_password-here');

Source

Upvotes: 3

irm518
irm518

Reputation: 99

I had a similar problem where I was getting the same error.

The answer for me ended up being that I was using a different port. By default, mysql expects a port of 3306, but I was using MAMP, where the MySQL server port was specified as 8889. As soon as I added a port definition to my database connection, it was fine:

var connection = mysql.createConnection({
    port: 8889,
    user: 'root',
    password : 'password',
    database : 'my_database'
});

NOTE: This is for Mac using MAMP, haven't tried it on ubuntu or Windows.

Upvotes: 9

Related Questions