mysql: NodeJS mysql module transforms localhost to 127.0.0.1 and fails connection
I am trying to connect to ProxySQL that is set-up to connect to a MySQL database. From command line, the following works. The port number 6033
is for ProxySQL.
mysql -u demo1 -P6033 --database=database -p
However, the connection to ProxySQL with this package does not work.
var connection = mysql.createConnection({
"host" : "localhost",
"port": 6033,
"user": "demo1",
"password" : "password",
"database": "database"
})
connection.connect( (err) => { console.log(err.stack) } )
This is the error message.
Error: ER_ACCESS_DENIED_ERROR: ProxySQL Error: Access denied for user 'demo1'@'127.0.0.1' (using password: YES)
The user was created as
CREATE USER 'demo1'@'localhost' IDENTIFIED BY 'password';
I tried adding another user as 'demo'@'127.0.0.1'
and granted privileges for the same; didn’t work.
How do I retain the definition above and get mysql
to return a successful connection?
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 19 (10 by maintainers)
SOLVED! Thanks to this SO question - https://stackoverflow.com/a/50131831/919480
Two things.
mysql_native_password
. I think, this is related to the choice of option ‘Strong Password’ when installing MySQL.host
parameter should not belocalhost
because on Unix, it is treated differently. That is, the connection is via a socket (as you mentioned earlier). Therefore, sethost
parameter to127.0.0.1
. Or, removehost
parameter and usesocketPath
.Basically, let me know what the result of running the following command is on your setup when you have a chance: