由于错误的数据库访问凭据,spring boot war 打包失败

Posted

技术标签:

【中文标题】由于错误的数据库访问凭据,spring boot war 打包失败【英文标题】:spring boot war packaging fails because of wrong database access credentials 【发布时间】:2017-08-16 01:30:36 【问题描述】:

我正在尝试将我的 Spring Boot 应用程序部署到私有 JVM,该应用程序在我的本地设置上运行成功,我可以轻松构建战争,在我的 application.properties 文件中,我有本地数据库的数据库连接属性,在我将它们更改为主机中数据库的凭据后,maven 构建失败并出现异常:

  Host 'X.X.X.X' is not allowed to connect to this mysql server

我不明白为什么在构建期间尝试访问 mysql 服务器?

这是我的 pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mygroup</groupId>
<artifactId>myartifact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>myproject</name>
<description>description of my project</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.1.RELEASE</version>
    <relativePath/> 
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  <start-class>com.levels.website.LevelsApplication</start-class>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.6.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.mobile/spring-mobile-device -->
    <dependency>
        <groupId>org.springframework.mobile</groupId>
        <artifactId>spring-mobile-device</artifactId>
        <version>1.1.5.RELEASE</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

感谢任何帮助。

【问题讨论】:

你使用哪个 maven 命令来构建? mvn 全新安装 【参考方案1】:

MySQL 内部有一个表,它定义了允许连接到服务器的主机。您需要在这些表中添加服务器的 IP。 How to allow remote connection to mysql

【讨论】:

我只是在构建我的war文件,为什么我需要在构建过程中连接到服务器? 任何使用数据源的测试用例? 我没有任何测试用例 我建议只远程连接 maven 构建并放置一些异常断点***.com/questions/3453746/….. 我发现我的应用程序中有默认单元测试导致了这个问题,我通过跳过测试解决了它。

以上是关于由于错误的数据库访问凭据,spring boot war 打包失败的主要内容,如果未能解决你的问题,请参考以下文章

即使凭据为真,Spring Boot Security 也会在 API 调用上引发 401 身份验证错误

端口6000无法访问Spring Boot Swagger REST服务器由于localhost不安全错误

访问PCF Spring Boot应用程序上的VCAP属性

正文中的 Spring Boot OAuth2RestTemplate 客户端凭据

通过 Spring Boot Keycloak 集成的 OAuth2 客户端凭据流

Spring Boot和MySql - 无法使用新的服务数据库用户名/密码