java - 如何授予 Java Web 应用访问 Digital Ocean Droplet 的权限
问题描述
我在 Digital Ocean 液滴上托管 mysql 服务器,我正在尝试弄清楚如何授予 Spring Boot Web 应用程序对液滴的访问权限,以便它可以连接到数据库。我配置了 droplet,使其只能通过 ssh 隧道访问(即:我禁用了密码身份验证),但数据库服务器本身可以使用用户名和密码连接。
我知道如何使用 Connector/J 连接到数据库、配置数据源等等。但是,Digital Ocean 的额外安全层对我来说是新的,我不知道如何解决这个问题。
编辑:当我运行应用程序并尝试访问端点时,我收到以下错误:
The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: null, message from server: "Host '<my network hostname>' is not allowed to connect to this MySQL server"] with root cause
解决方案
因此,我错误地认为身份验证问题与 Digital Ocean 水滴有关。正如错误消息(请参阅上面的问题)所示,Spring Boot 应用程序能够访问远程 mysql 服务器,并且在那里发生了身份验证问题。事实证明,我试图连接的 mysql 用户只能在 localhost 上使用。
因此,我创建了一个新的 mysql 用户并将其绑定到本地计算机的公共 IP 地址,这样就解决了问题。有关如何完成此操作的详细信息,请阅读以下答案:
推荐阅读
- serenity-platform - ImageUploadEditor : "上传的文件不是图片!"
- node.js - 在 react 和 node 中设置 socket io
- python - 为什么 Python exe 文件这么大?
- python - QTableWidget.itemAt() 的最后一行返回 None 而不是 QTableWidgetItem
- amazon-workspaces - 低带宽的 AWS Workspace
- python - 模块“scipy”中没有名称“fft”
- git - 在 ubuntu 16 中触发 GIT 中的标记命令时出现错误:字符串中的未知非 ascii 选项
- javascript - 根据 ID 匹配更新/复制单元格数据到另一个工作表
- javascript - 浏览器级别的加密
- flutter - 如何在 Flutter 应用程序中混淆代码