Reputation: 1285
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
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
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
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
Reputation: 1
Actually the solution is easier than you think. Change the host to 127.0.0.1 for the database connection.
Upvotes: -1
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');
Upvotes: 3
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