使用nodejs通过ssl使用明文密码连接到MariaDB

2024-02-07

我正在尝试通过 ssl 连接到 mariadb 实例,

var mysql = require('mysql');
var conn = mysql.createConnection({
    user: 'user',
    password: 'password',
    debug: true,
    port: '3306',
    host: "host",
    ssl: {
        "ca": ca
    }
});

conn.connect();

ca 是证书数组。我收到以下错误。

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使用node-mysql2(我希望尽快解决这个问题),所以你需要在服务器上启用 auth_plugin 和 auth_switch 支持

编辑:语法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用nodejs通过ssl使用明文密码连接到MariaDB 的相关文章

随机推荐

  • 在 iOS 中播放简单音效的最佳方法

    我发现许多有关在 iOS 中播放声音的相互矛盾的数据 每次用户触摸屏幕时仅播放简单的 ping 声音片段的推荐方法是什么 我用这个 头文件 import
  • 为什么“pip show”或“pip list”对我不起作用?

    蟒蛇的pip正在为我安装和更新软件包 但一些记录的命令似乎不受支持 至少在 OS 10 8 2 和 Python 2 7 2 上运行 1 2 1 时 当我尝试时 pip list or pip show
  • 升级时创建表

    我一直在努力解决这个问题 但我不知道我错过了什么 我有一个 Android 应用程序 我希望再添加 1 个表 但是我无法做到这一点 而且我也没有例外 不喜欢这些无声杀手 下面是我的 SQLiteHelper 类的代码 public clas
  • GWT 对单元格表进行排序,可能只是我没有看到的

    在过去的几个小时里 我一直在努力对 GWT CellTable 进行排序 这确实是一个愚蠢的问题 因为它已经在这里完成了http gwt google com samples Showcase Showcase html CwCellTab
  • Operator= 和 C++ 中未继承的函数?

    在我刚刚进行的测试之前 我认为在 C 中只有构造函数不被继承 但显然 任务operator 是不是太 这是什么原因呢 是否有任何解决方法来继承赋值运算符 是否也是如此operator operator 所有其他函数 除了构造函数 运算符 都
  • 暂停JW播放器?

    我有三个标签 每个选项卡的滑块中有两个视频 问题是当我切换任何选项卡时or单击任何单个视频 所有其他视频都应暂停 我可以收集所有 id 然后循环使用 stop 但是还有其他更干净 更简单的方法吗 jwplayer video pub sto
  • Universal Analytics - 第三方支付网关

    我们的网站目前正在通过跟踪代码管理器使用 Universal Analytics 进行跟踪 我们的结账流程包括在前往感谢页面之前重定向至第三方支付网关 所以 它看起来像这样 site com checkout gt site com pay
  • 通过保留顺序,根据 id 列将 Spark DataFrame 拆分为两个 DataFrame(70% 和 30%)

    我有一个 Spark 数据框 就像 id start time feature 1 01 01 2018 3 567 1 01 02 2018 4 454 1 01 03 2018 6 455 2 01 02 2018 343 4 2 01
  • 预先计算多维线性插值的权重

    我有一个沿 D 维度的非均匀矩形网格 网格上的逻辑值 V 矩阵和查询数据点 X 矩阵 网格点的数量在不同维度上有所不同 我对同一网格 G 和查询 X 多次运行插值 但对于不同的值 V 目标是预先计算插值的索引和权重并重用它们 因为它们始终相
  • Haystack more_like_this 返回全部

    我正在使用 Django haystack solr 进行搜索 我已经能够搜索 现在我想使用 more like this 查找类似的项目 当我尝试使用 more like this 功能时 我会返回属于该模型类型的所有对象 而不仅仅是与其
  • 以编程方式创建/运行命令文件

    我正在尝试创建一个 cmd 文件来安装 msi 然后通过 C 代码执行该 cmd 文件 如果我使用 Visual Studio 中的 f5 或 control f5 运行该代码 则该代码可以完美运行 但是 一旦我将代码打包在 msi 文件中
  • 如何在 ecmascript 6 中模拟导入的模块?

    我有一个带有 mocha babel 和 node 的测试设置 旨在测试 ecmascript 6 代码 有人对如何模拟被测模块中的导入有任何建议吗 ES2015 中的导入和导出是语言本身的一部分 并且被设计为可静态分析 因此 它们无法在运
  • 嵌套 CAST 不起作用

    为什么嵌套转换在 MySQL 中不起作用 它确实使用 SQL Server select cast cast myColumn as decimal 5 2 as int from myTable SQLFiddle示例 http sqlf
  • Codeigniter ajax CSRF问题

    我制作了一个简单的自动加载功能 当您在网站上向下滚动时加载内容 但是 当我在 Codeigniter 中启用 CSRF 保护时 似乎存在一些问题 我没有使用表单 所以当我在滚动时执行发布请求时 我不知道如何将令牌从 A 发送到 B 我的 J
  • 静态库的静态成员

    我有带有静态成员的静态库 该库静态链接到主应用程序及其插件之一 看起来像在 main 应用程序 和 dll 插件 中初始化静态变量 Question 如何避免动态库加载时静态变量重新初始化 或者我可能错过了一些简单的事情 更多信息 这是一个
  • Oracle:用户数据中按循环连接

    我了解 Oracle 中何时会发生循环 从理论上讲 如果一条记录既是另一个节点的父节点 又是另一个节点的子节点 那么它就可以进入循环 但我不明白为什么我的这个特定查询会陷入循环 SELECT Empno Ename Job FROM Emp
  • Github API OAuth 令牌验证

    有什么方法可以验证我的 github API 的 OAuth 令牌吗 我所说的 令牌 是指用户登录我的网站后获得的令牌 我使用 cookie 将其存储在客户端计算机上 但仅检查是否有令牌是不够的 我需要实际检查令牌是否有效 目前 这需要我提
  • 如果我访问 UserTransaction 是否意味着我使用 2 阶段提交或 XA?

    UserTransaction ut 查找 ut beginTransaction saveToFooDB statelessEjb transactionSupportedMethod 将一些内容保存到 Foo DB saveToFooD
  • mysql2 gem 出现 Gem::LoadError,但它已经在 Gemfile 中

    Gem LoadError Specified mysql2 for database adapter but the gem is not loaded Add gem mysql2 to your Gemfile 加载以下文件时发生此错
  • 使用nodejs通过ssl使用明文密码连接到MariaDB

    我正在尝试通过 ssl 连接到 mariadb 实例 var mysql require mysql var conn mysql createConnection user user password password debug tru