首页 > 解决方案 > 如何授予 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

标签: javamysqlspringdigital-ocean

解决方案


因此,我错误地认为身份验证问题与 Digital Ocean 水滴有关。正如错误消息(请参阅上面的问题)所示,Spring Boot 应用程序能够访问远程 mysql 服务器,并且在那里发生了身份验证问题。事实证明,我试图连接的 mysql 用户只能在 localhost 上使用。

因此,我创建了一个新的 mysql 用户并将其绑定到本地计算机的公共 IP 地址,这样就解决了问题。有关如何完成此操作的详细信息,请阅读以下答案:

主机 'xxx.xx.xxx.xxx' 不允许连接到这个 MySQL 服务器


推荐阅读