mysqljs / mysql

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

ER_NOT_SUPPORTED_AUTH_MODE #2499

Open alexsaelao opened 3 years ago

alexsaelao commented 3 years ago

code: 'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client', sqlState: '08004', fatal: true

I have this problem, pleases recomend how to fix that Thou you very much

My code:

const {
    createPool 
} = require('mysql');

const pool = createPool ({
    host: "127.0.0.1",
    user: "root",
    password: "",
    database: "api_db",
    connectionLimit: 10
})

pool.query(`SELECT * FROM po_view`, (err, result, field) => {
    if(err) {
        return console.log(err);
    } 
    return console.log(result)
})

module.exports = pool
matonga commented 2 years ago

It looks like this node module doesn't support "caching_sha2_password" authentication. It's been introduced maybe in MySQL 8.0. In the meantime you can downgrade your mysql user:

$ sudo mysql -u root
mysql> ALTER USER the_user IDENTIFIED WITH mysql_native_password BY 'the_password';

Please keep in mind this doesn't fix the issue, it just downgrades your user password so it can be used with mysqljs' mysql node module.

matonga commented 2 years ago

It looks like PR https://github.com/mysqljs/mysql/pull/2233 would solve your issue.

matonga commented 2 years ago

It looks like I prefix my sentences with "It looks like"... :joy_cat:

ginlink commented 2 years ago

It looks like this node module doesn't support "caching_sha2_password" authentication. It's been introduced maybe in MySQL 8.0. In the meantime you can downgrade your mysql user:

$ sudo mysql -u root
mysql> ALTER USER the_user IDENTIFIED WITH mysql_native_password BY 'the_password';

Please keep in mind this doesn't fix the issue, it just downgrades your user password so it can be used with mysqljs' mysql node module.

It works for me! Thanks!