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.loca
Actually the solution is easier than you think. Change the host to 127.0.0.1 for the database connection.
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'
}
});
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
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
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...
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.