连接到MariaDB的有超过的NodeJS SSL与明文密码
问题描述:
我想通过SSL连接到MariaDB的情况下,连接到MariaDB的有超过的NodeJS SSL与明文密码
var mysql = require('mysql');
var conn = mysql.createConnection({
user: 'user',
password: 'password',
debug: true,
port: '3306',
host: "host",
ssl: {
"ca": ca
}
});
conn.connect();
CA是cerificates的数组。我收到以下错误。
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MariaDB client
我能够使用python与mysql.connector连接到数据库。
将其设置为调试模式后,我可以看到客户端正在尝试使用mysql_native_password身份验证。我需要使用mysql_clear_password。
答
如果你的服务器支持基于插件的身份验证和身份验证切换请求,你可以试试下面的代码:
var mysql = require('mysql2');
var conn = mysql.createConnection({
user: 'user',
password: 'password',
debug: true,
port: '3306',
host: "host",
ssl: {
"ca": ca
},
authSwitchHandler = (data, cb) => {
if (data.pluginName === 'mysql_clear_password') {
// https://dev.mysql.com/doc/internals/en/clear-text-authentication.html
var password = 'password\0';
var buffer = Buffer.from(password);
cb(null, buffer);
}
});
不幸初始认证类型始终mysql_native
淋巴结mysql2(我希望能尽快解决这个问题),所以你需要在服务器上同时启用auth_plugin和auth_switch支持
你试过['mysql2'](https://github.com/sidorares/node-mysql2)吗? – robertklep
是的,给我同样的错误。 –