- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 mysql_clear_password
插件连接到 MySQL 服务器。我为 node-mysql2
设置了连接配置,如下所示:
const connectionConfig = {
host: rwConfig.host,
user: rwConfig.user,
database: rwConfig.database,
ssl: {
ca: sslContent
},
password
}
然后为了支持 mysql_clear_password
插件,我添加了以下内容(我使用的引用链接: https://github.com/sidorares/node-mysql2/issues/438#issuecomment-255343793 ):
connectionConfig.authSwitchHandler = (data, cb) => {
console.log('In auth switch handler');
if (data.pluginName === 'mysql_clear_password') {
console.log(data);
console.log(data.pluginData.toString('utf8'));
console.log('In mysql clear password');
var tmppassword = connectionConfig.password + '\0';
var buffer = Buffer.from(tmppassword, 'base64');
cb(null, buffer);
}
};
当我尝试连接到我的数据库时,这有效。
现在我尝试使用 knexjs 做类似的事情。我使用以下配置对象:
const knexConfig = {
client: 'mysql2',
connection: connectionConfig,
pool: {
min: 0,
max: 20
},
acquireConnectionTimeout: 10000
};
我作为 connection
的值传入的 connectionConfig
与我用于连接 node-mysql2
的对象相同。然后我创建一个 knex 连接:
const rwConnection = knex(knexConfig);
由于某种原因,这会引发此错误:
{ Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client
at Packet.asError (node_modules/mysql2/lib/packets/packet.js:703:13)
at ClientHandshake.Command.execute (node_modules/mysql2/lib/commands/command.js:28:22)
at Connection.handlePacket (node_modules/mysql2/lib/connection.js:515:28)
at PacketParser.onPacket (node_modules/mysql2/lib/connection.js:94:16)
at PacketParser.executeStart (node_modules/mysql2/lib/packet_parser.js:77:14)
at TLSSocket.<anonymous> (node_modules/mysql2/lib/connection.js:386:31)
at emitOne (events.js:96:13)
at TLSSocket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at TLSSocket.Readable.push (_stream_readable.js:134:10)
at TLSWrap.onread (net.js:547:20)
code: 'ER_NOT_SUPPORTED_AUTH_MODE',
errno: 1251,
sqlState: '#08004' }
我不知道为什么这会给我这个错误。在 knex 文档 ( http://knexjs.org/ ) 中,它说:
连接选项直接传递到适当的数据库客户端以创建连接,并且可以是对象或连接字符串
基于此,我认为它只会传递配置并使用node-mysql2
建立连接。任何帮助将不胜感激。
最佳答案
我解决了这个问题,现在可以了。 Knex 没有将所有属性传递给 msyql2 客户端。
这是我为其他可能遇到此问题的人所做的事情。我在 node_modules/knex/lib/dialect/mysql2
中修改了 knex 传递给 mysql2 的配置,并将 authSwitchHandler
添加到 configOptions 数组中。
关于mysql - "mysql_clear_password"使用 knex 时出现插件错误,但使用 mysql2 时则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45681300/
我尝试连接我的数据库并在 MacOS 上使用 Navicat,但我遇到错误并且无法连接。我尝试了很多不同的东西,但还无法连接。任何帮助真的很感激,能帮助我真的很棒。 错误: Connection Fa
我正在尝试让我们的 MySQL 用户能够通过 PAM (Kerberos) 对我们的企业用户数据库进行身份验证。如果我在命令中使用“--enable-cleartext-plugin”,我可以使用我的
我进行了多次搜索,试图找出如何处理我在尝试登录 MySQL 数据库时遇到的身份验证错误。也许我不知道要问什么问题或我在寻找什么,但这就是我所拥有的, using MySql.Data.MySqlCl
我正在尝试使用 mysql_clear_password 插件连接到 MySQL 服务器。我为 node-mysql2 设置了连接配置,如下所示: const connectionConfig = {
我需要使用 Visual Studio 的服务器资源管理器 -> 添加连接连接到 2 个 MySQL 服务器。 我将数据提供程序设置为MySQL 数据库(MySQL 数据提供程序) 并输入凭据,然后尝
我是一名优秀的程序员,十分优秀!