我将mysql服务器托管在一个digitaloceandroplet上,我正试图找出如何授予springbootweb应用程序对droplet的访问权,以便它能够连接到数据库。我配置了droplet,以便只能通过ssh隧道访问它(即:i禁用了密码身份验证),但数据库服务器本身可以使用用户名和密码连接。
我知道如何使用connector/j连接到数据库,配置数据源等等。然而,数字海洋的额外安全层对我来说是新的,我不知道如何解决这个问题。
编辑:当我运行应用程序并尝试命中端点时,出现以下错误:
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
1条答案
按热度按时间cpjpxq1n1#
所以,我错误地认为认证问题与数字海洋水滴有关。正如错误消息(参见上面的问题)所指出的,spring引导应用程序能够访问远程mysql服务器,并且在那里发生了身份验证问题。结果发现,我试图连接的mysql用户只能在localhost上使用。
因此,我创建了一个新的mysql用户并将其绑定到本地机器的公共ip地址,这就解决了问题。有关如何做到这一点的详细信息,请阅读以下答案:
不允许主机“.xx..”连接到此mysql服务器