mysqljs / mysql

A pure node.js JavaScript Client implementing the MySQL protocol.
MIT License
18.31k stars 2.53k forks source link

ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO) #2142

Closed henaege closed 3 years ago

henaege commented 5 years ago

Hello,

I have a node app that uses a mysql database (Server version: 5.7.24-0ubuntu0.16.04.1 (Ubuntu)). It used to work fine but just recently I get the ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO) error when running the app. I see afew other similar issues reported but they don't seem to be the same.

Here is my javascript:

function handleDisconnect() {
    var connection = mysql.createConnection({
        host: 'localhost',
        user: 'x',
        password: 'password',
        database: 'database_name'
}) 

connection.connect(function(err) {              
    if(err) {                                     
      console.log('error when connecting to db:', err);
      setTimeout(handleDisconnect, 2000);
    }                                     
  });                                     

  connection.on('error', function(err) {
    console.log('db error', err);
    if(err.code === 'PROTOCOL_CONNECTION_LOST') { 
      handleDisconnect();                         
    } else {                                      
      throw err;                                  
    }
  });
}

I can log in to the mysql server just fine on CLI. The issue appears to be that for whatever reason the user name and password aren't being used by mysql (Access denied for user ''@'localhost' (using password: NO)) even though they are specified above. I don't have an anonymous ('') user listed, which I think would cause the ''@'localhost' if that were the case?

mysql> select user, host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| x                | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

So why is mysql apparently looking for an anonymous user and not recognizing the password parameter? Please let me know what additional information you may need. Thanks!

dougwilson commented 5 years ago

Hi @henaege that is very strange. I just did a quick test with the same MySQL server and didn't have the issue. It's possible there are more variables between our cases, though. Can you provide the following to start?

  1. Version of this module you're using
  2. Version of Node.js running on
  3. If you can add debug: true to your connection options and paste the output of the failed login here

See https://github.com/mysqljs/mysql#debugging-and-reporting-problems for more help on what we need to help you 👍

henaege commented 5 years ago

Hi @dougwilson Thanks for taking a look. I am using mysql version 2.13.0 with Node version 7.10.1. I am also using Express version 4.15.2 if that matters.

Here is what I think is the debug output (I haven't seen this output in the logs before I added debug: true):

<-- HandshakeInitializationPacket
HandshakeInitializationPacket {
  protocolVersion: 10,
  serverVersion: '5.7.24-0ubuntu0.16.04.1',
  threadId: 70815,
  scrambleBuff1: <Buffer 03 22 25 44 14 1b 3e 46>,
  filler1: <Buffer 00>,
  serverCapabilities1: 63487,
  serverLanguage: 8,
  serverStatus: 2,
  serverCapabilities2: 33279,
  scrambleLength: 21,
  filler2: <Buffer 00 00 00 00 00 00 00 00 00 00>,
  scrambleBuff2: <Buffer 0c 05 2a 25 6a 38 6d 1a 19 1d 6a 7f>,
  filler3: <Buffer 00>,
  pluginData: 'mysql_native_password',
  protocol41: true }

--> ClientAuthenticationPacket
ClientAuthenticationPacket {
  clientFlags: 455631,
  maxPacketSize: 0,
  charsetNumber: 33,
  filler: undefined,
  user: 'x',
  scrambleBuff: <Buffer da 3d e9 b8 d8 df ac 49 55 fe 63 95 1b 1d e3 58 14 03 5e ec>,
  database: 'game_on',
  protocol41: true }

<-- OkPacket
OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }

<-- HandshakeInitializationPacket
HandshakeInitializationPacket {
  protocolVersion: 10,
  serverVersion: '5.7.24-0ubuntu0.16.04.1',
  threadId: 70816,
  scrambleBuff1: <Buffer 13 71 30 69 51 03 4b 5d>,
  filler1: <Buffer 00>,
  serverCapabilities1: 63487,
  serverLanguage: 8,
  serverStatus: 2,
  serverCapabilities2: 33279,
  scrambleLength: 21,
  filler2: <Buffer 00 00 00 00 00 00 00 00 00 00>,
  scrambleBuff2: <Buffer 4b 46 77 52 3b 5f 0e 01 35 11 19 04>,
  filler3: <Buffer 00>,
  pluginData: 'mysql_native_password',
  protocol41: true }

--> ClientAuthenticationPacket
ClientAuthenticationPacket {
  clientFlags: 455631,
  maxPacketSize: 0,
  charsetNumber: 33,
  filler: undefined,
  user: 'x',
  scrambleBuff: <Buffer 2b 55 52 22 b8 88 cb a1 7f 98 93 33 60 3a 1f b4 cc 3d 4c 59>,
  database: 'game_on',
  protocol41: true }

<-- OkPacket
OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }

<-- HandshakeInitializationPacket
HandshakeInitializationPacket {
  protocolVersion: 10,
  serverVersion: '5.7.24-0ubuntu0.16.04.1',
  threadId: 70817,
  scrambleBuff1: <Buffer 7b 06 5b 76 17 06 36 22>,
  filler1: <Buffer 00>,
  serverCapabilities1: 63487,
  serverLanguage: 8,
  serverStatus: 2,
  serverCapabilities2: 33279,
  scrambleLength: 21,
  filler2: <Buffer 00 00 00 00 00 00 00 00 00 00>,
  scrambleBuff2: <Buffer 2e 44 31 3b 35 72 01 3a 4c 7f 66 63>,
  filler3: <Buffer 00>,
  pluginData: 'mysql_native_password',
  protocol41: true }

--> ClientAuthenticationPacket
ClientAuthenticationPacket {
  clientFlags: 455631,
  maxPacketSize: 0,
  charsetNumber: 33,
  filler: undefined,
  user: 'x',
  scrambleBuff: <Buffer 27 11 c3 fc 46 a8 b0 4d 34 31 6f f2 0a 40 2c d3 7a c4 b1 0c>,
  database: 'game_on',
  protocol41: true }

<-- OkPacket
OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }

<-- HandshakeInitializationPacket
HandshakeInitializationPacket {
  protocolVersion: 10,
  serverVersion: '5.7.24-0ubuntu0.16.04.1',
  threadId: 70818,
  scrambleBuff1: <Buffer 44 1f 7d 57 76 0c 3d 17>,
  filler1: <Buffer 00>,
  serverCapabilities1: 63487,
  serverLanguage: 8,
  serverStatus: 2,
  serverCapabilities2: 33279,
  scrambleLength: 21,
  filler2: <Buffer 00 00 00 00 00 00 00 00 00 00>,
  scrambleBuff2: <Buffer 04 49 01 11 74 6e 0f 1e 1c 50 29 2c>,
  filler3: <Buffer 00>,
  pluginData: 'mysql_native_password',
  protocol41: true }

--> ClientAuthenticationPacket
ClientAuthenticationPacket {
  clientFlags: 455631,
  maxPacketSize: 0,
  charsetNumber: 33,
  filler: undefined,
  user: 'x',
  scrambleBuff: <Buffer 6c 6e 36 11 b3 ca 1b bd 8d b9 ef 41 ab 12 5e 36 1d b7 7c ec>,
  database: 'game_on',
  protocol41: true }

<-- OkPacket
OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }

I also just noticed this in the pm2 error logs:

TypeError: Cannot read property 'host' of undefined
    at new ConnectionConfig (/var/www/game-on-project/node_modules/mysql/lib/ConnectionConfig.js:12:36)
    at Object.createConnection (/var/www/game-on-project/node_modules/mysql/index.js:13:34)
    at handleDisconnect (/var/www/game-on-project/routes/index.js:56:22)
    at Object.<anonymous> (/var/www/game-on-project/routes/index.js:76:1)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)

Here is line 12 in ConnectionConfig.js:

this.host               = options.host || 'localhost';

And here is the options object:

var options = {
    host     : url.hostname,
    port     : url.port,
    database : url.pathname.substr(1)
  };

In /etc/hosts I see 127.0.0.1 localhost so using 'localhost' should be fine, but one question I have is that in options, host is set to url.hostname. Is that the same as /etc/hostname If not, where is url.hostname coming from?

Edit: I'm guessing what's in /etc/hostname doesn't matter, but still curious what 'url' is. Is it sent by connect() from the object passed into createConnection?

Thanks again

dougwilson commented 5 years ago

Hi @henaege thanks for this information. That is indeed the correct output. I only see successful authentications in that output, no ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO) errors. Can you include the output for when you're getting that error?

As for your error TypeError: Cannot read property 'host' of undefined, that occurs when your code is calling .createConnection(options) where options === undefined.

Is is possible to share your full code on here so I can better assist? I'm not sure what is going on more than that without seeing the code and actually being able to reproduce the issue and look at it through a debugger.

henaege commented 5 years ago

Hi @dougwilson,

The output that includes the error message is in the pm2 logs, which I have attached the log file here. app-out-0.log

The repository for the project can be found here.

The entry point for the app is /app.js. The database connection is created in /routes/index.js. Sorry the code is a mess right now, I've been working on it trying to get it running. I think those are the main 2 things you'll need to access to run the app and troubleshoot but if you have questions about where anything else is please let me know.

Thanks!

dougwilson commented 5 years ago

Thank you @henaege . Is it possible you can please update that repo to be the exact same code that produced that log file? Or if you can re-produce that log file with the repo that is up there? The line numbers in there don't match up with the repo you provided and it's difficult to understand what is going on exactly in your code that is causing the issue, and I don't have confidence the repo is actually the same code when the line numbers do not line up.

henaege commented 5 years ago

Hi @dougwilson,

I started the app using the same version of the code that is in the repo to generate new log files. I previously had to trim the log file because it was too large to upload; that's probably why the lines don't match. I also added the app error file; that is where I'm seeing TypeError: Cannot read property 'host' of undefined. Ideally that does what you need:

app-error-0.log app-out-0.log

If not, would you be able to show me exactly what you're looking at/for so I can get the data you need?

I also created a new branch that contains the original code that used to work but now does not. It's how the code was before I started changing things (specifically /routes/index.js). I think you would need the config file before you'd be able to use it; what would be the best way to send that directly to you if you need it?

Thanks

kai-koch commented 5 years ago

var serverInfo = require('../config/config')

The required file is not include in the repo. (Of course it is not! And for a good reason! ;-))

Please, double check, if it contains the right credentials and if they are exports as your app expects them to be exported. (Did you change the case of the variable names at one point?) Maybe include a config.sample with dumy values for inspecting the structure of the exports.

Although the line-numbers do not match in the error-log, the logs show "no user" and "no password" (possibly "no host" too, but that defaults to 'localhost', when undefined).

My money is on the above require().

Roncarlos commented 4 years ago

I have the same problem when I don't use a password. When I add a password, it recognizes my user (But of course it won't connect since my db account don't have password).

Im using:

<-- HandshakeInitializationPacket { protocolVersion: 10, serverVersion: '5.5.5-10.4.12-MariaDB', threadId: 59, scrambleBuff1: <Buffer 43 40 55 69 34 65 22 73>, filler1: <Buffer 00>, serverCapabilities1: 63486, serverLanguage: 8, serverStatus: 2, serverCapabilities2: 33279, scrambleLength: 21, filler2: <Buffer 00 00 00 00 00 00 07 00 00 00>, scrambleBuff2: <Buffer 40 27 3f 46 26 26 2e 54 3d 72 49 53>, filler3: <Buffer 00>, pluginData: 'mysql_native_password', protocol41: true }

--> (59) ClientAuthenticationPacket { clientFlags: 521167, maxPacketSize: 0, charsetNumber: 224, filler: undefined, user: 'discord_bot_rpg', scrambleBuff: , database: 'discord_bot_rpg', protocol41: true }

<-- (59) ErrorPacket { fieldCount: 255, errno: 1044, sqlStateMarker: '#', sqlState: '42000', message: "Access denied for user ''@'localhost' to database 'discord_bot_rpg'" }

Connection { _events: [Object: null prototype] {}, _eventsCount: 0, _maxListeners: undefined, config: ConnectionConfig { host: 'localhost', port: 3306, localAddress: undefined, socketPath: undefined, user: 'discord_bot_rpg', password: undefined, database: 'discord_bot_rpg', connectTimeout: 10000, insecureAuth: false, supportBigNumbers: false, bigNumberStrings: false, dateStrings: false, debug: undefined, trace: true, stringifyObjects: false, timezone: 'local', flags: '', queryFormat: undefined, pool: undefined, ssl: false, localInfile: true, multipleStatements: true, typeCast: true, maxPacketSize: 0, charsetNumber: 224, clientFlags: 521167 }, _socket: undefined, _protocol: Protocol { _events: [Object: null prototype] {}, _eventsCount: 0, _maxListeners: undefined, readable: true, writable: true, _config: ConnectionConfig { host: 'localhost', port: 3306, localAddress: undefined, socketPath: undefined, user: 'discord_bot_rpg', password: undefined, database: 'discord_bot_rpg', connectTimeout: 10000, insecureAuth: false, supportBigNumbers: false, bigNumberStrings: false, dateStrings: false, debug: undefined, trace: true, stringifyObjects: false, timezone: 'local', flags: '', queryFormat: undefined, pool: undefined, ssl: false, localInfile: true, multipleStatements: true, typeCast: true, maxPacketSize: 0, charsetNumber: 224, clientFlags: 521167 }, _connection: [Circular], _callback: null, _fatalError: null, _quitSequence: null, _handshake: false, _handshaked: false, _ended: false, _destroyed: false, _queue: [], _handshakeInitializationPacket: null, _parser: Parser { _supportBigNumbers: false, _buffer: , _nextBuffers: [BufferList], _longPacketBuffers: [BufferList], _offset: 0, _packetEnd: null, _packetHeader: null, _packetOffset: null, _onError: [Function: bound handleParserError], _onPacket: [Function: bound ], _nextPacketNumber: 0, _encoding: 'utf-8', _paused: false },

}, _connectCalled: false, state: 'disconnected', threadId: null,

}


* With password everything is fine user is detected
```js
Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'discord_bot_rpg'@'localhost' (using password: YES)
    at Handshake.Sequence._packetToError (D:\discordbotrpg-discord\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
    at Handshake.ErrorPacket (D:\discordbotrpg-discord\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18)
    at Protocol._parsePacket (D:\discordbotrpg-discord\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (D:\discordbotrpg-discord\node_modules\mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (D:\discordbotrpg-discord\node_modules\mysql\lib\protocol\Parser.js:43:10)
    at Protocol.write (D:\discordbotrpg-discord\node_modules\mysql\lib\protocol\Protocol.js:38:16)
    at Socket.<anonymous> (D:\discordbotrpg-discord\node_modules\mysql\lib\Connection.js:88:28)
    at Socket.<anonymous> (D:\discordbotrpg-discord\node_modules\mysql\lib\Connection.js:526:10)
    at Socket.emit (events.js:200:13)
    at addChunk (_stream_readable.js:294:12)
    --------------------
    at Protocol._enqueue (D:\discordbotrpg-discord\node_modules\mysql\lib\protocol\Protocol.js:144:48)
    at Protocol.handshake (D:\discordbotrpg-discord\node_modules\mysql\lib\protocol\Protocol.js:51:23)
    at Connection.connect (D:\discordbotrpg-discord\node_modules\mysql\lib\Connection.js:116:18)
    at Connection._implyConnect (D:\discordbotrpg-discord\node_modules\mysql\lib\Connection.js:454:10)
    at Connection.query (D:\discordbotrpg-discord\node_modules\mysql\lib\Connection.js:196:8)
    at internal/util.js:286:30
    at new Promise (<anonymous>)
    at Connection.query (internal/util.js:285:12)
    at Object.query (D:\discordbotrpg-discord\conf\mysql.js:14:34)
    at ModuleHandler.loadPrefixes (D:\discordbotrpg-discord\src\Modules\ModuleHandler.js:270:14) {
  code: 'ER_ACCESS_DENIED_ERROR',
  errno: 1045,
  sqlMessage: "Access denied for user 'discord_bot_rpg'@'localhost' (using password: YES)",
  sqlState: '28000',
  fatal: true
}

<-- HandshakeInitializationPacket {
  protocolVersion: 10,
  serverVersion: '5.5.5-10.4.12-MariaDB',
  threadId: 60,
  scrambleBuff1: <Buffer 5d 67 6c 6b 52 3c 70 43>,
  filler1: <Buffer 00>,
  serverCapabilities1: 63486,
  serverLanguage: 8,
  serverStatus: 2,
  serverCapabilities2: 33279,
  scrambleLength: 21,
  filler2: <Buffer 00 00 00 00 00 00 07 00 00 00>,
  scrambleBuff2: <Buffer 3c 44 22 76 53 79 2c 68 4a 77 3d 64>,
  filler3: <Buffer 00>,
  pluginData: 'mysql_native_password',
  protocol41: true
}

--> (60) ClientAuthenticationPacket {
  clientFlags: 521167,
  maxPacketSize: 0,
  charsetNumber: 224,
  filler: undefined,
  user: 'discord_bot_rpg',
  scrambleBuff: <Buffer 7d 0d ed 2e fb db 05 7b d3 3b 11 66 e8 26 c6 85 8f 44 41 e0>,
  database: 'discord_bot_rpg',
  protocol41: true
}

<-- (60) ErrorPacket {
  fieldCount: 255,
  errno: 1045,
  sqlStateMarker: '#',
  sqlState: '28000',
  message: "Access denied for user 'discord_bot_rpg'@'localhost' (using password: YES)"
}
deepikasingh3715 commented 4 years ago

Hello,

I have a node app that uses a mysql database (Server version: 5.7.24-0ubuntu0.16.04.1 (Ubuntu)). It used to work fine but just recently I get the ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO) error when running the app. I see afew other similar issues reported but they don't seem to be the same.

Here is my javascript:

function handleDisconnect() {
    var connection = mysql.createConnection({
        host: 'localhost',
        user: 'x',
        password: 'password',
        database: 'database_name'
}) 

connection.connect(function(err) {              
    if(err) {                                     
      console.log('error when connecting to db:', err);
      setTimeout(handleDisconnect, 2000);
    }                                     
  });                                     

  connection.on('error', function(err) {
    console.log('db error', err);
    if(err.code === 'PROTOCOL_CONNECTION_LOST') { 
      handleDisconnect();                         
    } else {                                      
      throw err;                                  
    }
  });
}

I can log in to the mysql server just fine on CLI. The issue appears to be that for whatever reason the user name and password aren't being used by mysql (Access denied for user ''@'localhost' (using password: NO)) even though they are specified above. I don't have an anonymous ('') user listed, which I think would cause the ''@'localhost' if that were the case?

mysql> select user, host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| x                | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

So why is mysql apparently looking for an anonymous user and not recognizing the password parameter? Please let me know what additional information you may need. Thanks!

hi @henaege ,

I also faced the same issue.

In my case, it worked when I used " connection.config " rather than only using " connection " because mysql.createConnection() returns an object containing one of the key named - config, responsible for holding connection string.

VijaykumarBhavanur commented 4 years ago

@deepikasingh3715 Even I'm facing same issue could you please suggest where to add connection.config? or it will be helpful if you attach code snippet.

deepikasingh3715 commented 4 years ago

@deepikasingh3715 Even I'm facing same issue could you please suggest where to add connection.config? or it will be helpful if you attach code snippet.

hi @VijaykumarBhavanur

Let's say for the given code :

var mysqlConnection = mysql.createConnection({ host: "localhost", user:"user", password:"password", database:"database", multipleStatements : true, dialect: "mysql", pool: { max: 5, min: 0, acquire: 30000, idle: 10000 } });

here mysqlConnection is an object having these properties -

Connection {_events: Object, _eventsCount: 0, _maxListeners: undefined, config: ConnectionConfig, _socket: undefined, …}

So you can retrieve properties of connection string by using : connection.config.password, or whatever properties you want to use while configuring it with your choice of ORM.

For example, if I use sequelize , it should be :

const sequelize = new Sequelize(mysqlConnection.config.database, connection.mysqlConnection.user,connection.config.password, { host: mysqlConnection.config.host, dialect: mysqlConnection.config.dialect, dialect:'mysql', pool: { max: mysqlConnection.config.pool.max, min: mysqlConnection.config.pool.min, acquire: mysqlConnection.config.pool.acquire, idle: mysqlConnection.config.pool.idle } });

Thanks

VijaykumarBhavanur commented 4 years ago

@deepikasingh3715 Thank you for detailed solution.

TayyabNaveed commented 4 years ago

@deepikasingh3715 Even I'm facing same issue could you please suggest where to add connection.config? or it will be helpful if you attach code snippet.

hi @VijaykumarBhavanur

Let's say for the given code :

var mysqlConnection = mysql.createConnection({ host: "localhost", user:"user", password:"password", database:"database", multipleStatements : true, dialect: "mysql", pool: { max: 5, min: 0, acquire: 30000, idle: 10000 } });

here mysqlConnection is an object having these properties -

Connection {_events: Object, _eventsCount: 0, _maxListeners: undefined, config: ConnectionConfig, _socket: undefined, …}

So you can retrieve properties of connection string by using : connection.config.password, or whatever properties you want to use while configuring it with your choice of ORM.

For example, if I use sequelize , it should be :

const sequelize = new Sequelize(mysqlConnection.config.database, connection.mysqlConnection.user,connection.config.password, { host: mysqlConnection.config.host, dialect: mysqlConnection.config.dialect, dialect:'mysql', pool: { max: mysqlConnection.config.pool.max, min: mysqlConnection.config.pool.min, acquire: mysqlConnection.config.pool.acquire, idle: mysqlConnection.config.pool.idle } });

Thanks

@deepikasingh3715 I am having the same problem but how to use connection.config without sequelize and with just mysql driver?

neevpenkar commented 3 years ago

Hey! I had the same error popping up, while I was trying to log in to the database via Node.JS. In my case, the database was provided by my website hosting company, and was hosted remotely. The steps I followed till I resolved my issue, partly, are:

  1. Checking the IP addresses allowed to connect to the database in the security configuration of the USER of the database. From the Dashboard (Dreamhost.com): Websites -> MySQL Databases -> (End Of Page) Databases on this server -> click on the user you want to log-in as and check if your PUBLIC IP is entered, with the specified wildcard.
  2. After checking all the peripheral things such as MySQL version and permissions, I got fed up and made myself a new user with all the necessary permissions, and called it 'test user'. You can also make a new host name.
  3. After making a new user, it should probably work as it worked for me. Will keep updating answer as I debug the error in the original user.
BenRacicot commented 3 years ago

Hi, has anyone found any direct causes for this? I'm on Google Cloud SQL instance and am getting this error consistently.

App server error Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'recruiter'@'69.9.50.185' (using password: YES)

MySQL Workbench Error Failed to Connect to MySQL at 30.231.190.19:3306 with user ben Access denied for user 'ben'@'69.9.50.185' (using password: YES)

Terminal https://cloud.google.com/sql/docs/mysql/connect-admin-ip mysql --host=30.231.190.19 --user=ben --password ERROR 1045 (28000): Access denied for user 'recruiter'@'69.9.50.185' (using password: YES)

May specific example may be a GCP issue however the MySQL error matches directly and WAS working then stopped abruptly without any intervention.

dougwilson commented 3 years ago

Hello everyone, I understand this thread is long, but this issue is not resolvable or has been shown to be caused my this module specifically. The error mesaage you are seeing is being generated by the MySQL server itself as part of authentication and not by this module. If you are having trouble connecting from this client or another, please work though the excellent troubleshooting steps the MySQL server documentation has: https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html