java - 防止未经授权的软件访问mysql数据库

标签 java mysql authentication remote-access

我正在用 java 编写一个应用程序,我想让它能够访问 mysql 远程服务器。 我的问题是,如果应用程序有用户名和密码,有人可以获取它们并将我的数据库与不同的软件一起使用。 有没有办法阻止它?

更新

我找到了 this从 Android 设备连接到远程 MySQL 数据库的解决方法。 你把服务放在中间。就像一个 php 页面,它以 JSON 格式编码数据,Android 应用程序通过 http 获取这些数据。 这是我发现的例子: Connecting to MySQL database

最佳答案

拥有用户名和密码专门用于授予对数据库的访问权限。这就是重点。

您可以采取一些额外措施,例如将数据库连接限制到特定主机,这样至少您的付费客户可以访问数据库,而其他人无法访问它,但您的客户可能会选择使用不同的软件来访问数据库。除了许可条款外,别无选择。

可以做的是在您自己的连接到数据库的硬件上运行一个中间程序,并将对数据库的访问限制为在您的直接管理控制下的软件。您的程序将验证来自客户控制下的软件的所有请求,并允许您允许的查询并拒绝(并记录)您不必允许的查询。 (您不需要来回发送原始 SQL 数据——您可以对数据和查询进行任意数量的处理。)

关于java - 防止未经授权的软件访问mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8411822/

相关文章:

mysql - 使用 wp-cli 和 xampp 建立数据库连接时出错

mysql - 如何计算 MySQL 查询内存/CPU 成本

java - Android - "setToolbarColor(int)"和 "setSecondaryToolbarColor(int)"已弃用

java - 如何自动删除每天的日志文件?

java - 如何在undertow java中将OAuth2配置添加到swagger

mysql - 我的 mySQL 触发器出了什么问题?

symfony - 如何将 token 存储作为参数传递给 Symfony 3.4 中的事件监听器

authentication - gRPC中如何使用Oauth2进行用户认证

angular - 如何获取和更新用户属性 AWS amplify angular 6

java - 为什么JVM CMS(concurrent mark-and-sweep) GC需要两次停顿?