无法连接到具有仅主机网络的 Virtualbox ubuntu VM 上的 mysql 数据库 运行

Unable to connect to mysql database running on a Virtualbox ubuntu VM with host-only network

我的 Mac 上安装了 VirtualBox 运行ning,带有 IP 地址为 192.168.56.15 的仅主机网络适配器。我已将虚拟机的 IP 地址设置为 192.168.56.107

Host : MacOs High Sierra
Guest VM: Ubuntu

我已经在 VM 上安装并配置了一个 mysql 数据库,并且我已经将用户 appuser 设置为可以远程访问该数据库。

现在,在我的 Mac 上,当我尝试 运行 springboot 应用程序时,我在 eclipse 中有一个 sprintboot 应用程序 运行ning。我收到以下错误。

2017-09-29 14:43:02.545  INFO 3886 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-09-29 14:43:02.545  INFO 3886 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
Fri Sep 29 14:43:12 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
2017-09-29 14:43:12.835 ERROR 3886 --- [           main] o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to create initial connections of pool.

java.sql.SQLException: Access denied for user ''@'192.168.56.15' (using password: NO)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) ~[mysql-connector-java-5.1.44.jar:5.1.44]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) ~[mysql-connector-java-5.1.44.jar:5.1.44]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) ~[mysql-connector-java-5.1.44.jar:5.1.44]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873) ~[mysql-connector-java-5.1.44.jar:5.1.44]

为什么会出现此错误? 我已经指定了所有正确的值。这是我的 application.properties 文件。 注意错误中的IP为VirtualBox中host-only适配器的IP

spring.datasource.url=jdbc:mysql://192.168.56.107:3306/appdatabase
spring.datasource.data-username=appuser
spring.datasource.data-password=******
spring.datasource.dbcp2.test-while-idle=true
spring.datasource.dbcp2.validation-query=SELECT 1
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

如何解决这个错误?

您与 MySQL 的连接工作正常,因为您没有收到任何连接异常。但是,您的身份验证失败,因为您尝试使用空用户名登录,如异常所示:

java.sql.SQLException: Access denied for user ''@'192.168.56.15' (using password: NO)

您正在使用名为 spring.datasource.data-usernamespring.datasource.data-password 的属性。 Spring 引导不知道这些属性。正确的属性是 spring.datasource.usernamespring.datasource.password:

spring.datasource.username=appuser
spring.datasource.password=******

可在 the documentation 中找到常用属性列表。