【问题标题】:MySQL emulator in JavaJava中的MySQL模拟器
【发布时间】:2015-07-22 05:25:33
【问题描述】:

如何将 Java 应用程序绑定到 MySQL 数据库当前运行的端口以模拟 MySQL 数据库?

我正在开发身份验证系统和 MySQL 数据库之间的中间件。到目前为止开发的所有应用程序都直接连接到 MySQL 数据库,我的目标是开发一个模拟数据库的 Java 应用程序:接收传入的请求(查询),执行一些操作(排队、检查和等),将请求发送到 MySQL db,接收响应,并将响应发送回调用方。

我无法找到 MySQL 请求格式的详细信息。绑定到特定端口后,如何解析传入的 MySQL 请求?在此过程中保持连接也很重要,因此其他应用程序不会认为存在连接问题。

【问题讨论】:

  • 您可以选择首先创建一个端口为 3306 的代理服务器,并通过 send thru 表示 mysql 实际上挂在另一个端口上。这将是一个中间人。当然,慢慢地理解协议。
  • 我发现很少有代理应用程序可以在客户端应用程序和 mysql 数据库之间提供桥梁,但是它们都没有提供开放的 API 来手动执行操作。它们都支持一组特定的工具(负载平衡、结果过滤等)。我确实浏览了一些源文件,但 mysql 主要是用 C 编写的,需要一段时间才能掌握源代码的细节。我有兴趣找到一个拦截器 API 来解析/重定向传入的请求。
  • 我是说他应该写一个小型代理服务器,@BigOnn

标签: java mysql database-connection


【解决方案1】:

只要 MySQL 不在同一台机器上使用它,您就可以轻松地将 Java 应用程序绑定到端口 3306(MySQL 的默认端口号)。

但是,为了了解通过该端口使用的协议,您可能需要深入研究 MySQL 源代码。 MySQL 有一个'Guided tour of the MySQL source code',这可能是一个很好的起点。

【讨论】:

    【解决方案2】:

    我决定自己实现 MySQL 连接协议,并使用MySQL Internals - Connection Phase 作为参考。查看连接器的现有开源实现也有助于理解细节。本质上,我正在用 Java 实现一个非常基本的自定义 MySQL 代理服务器。

    【讨论】:

      猜你喜欢
      • 2011-05-23
      • 2011-01-20
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      相关资源
      最近更新 更多