MySQL密码包含“ =”,在春季启动时密码输入错误

时间:2018-07-28 05:19:24

标签: java mysql spring-boot

我在应用程序中使用Spring Boot,并且我们具有用于部署Azure服务以及MySQL服务。

我可以将MySQL与MySQL工作台连接起来,但是在部署Spring Boot应用程序时会给我错误

Caused by: java.sql.SQLException: Access denied for user 'dev-admin'@'IP' (using password: YES)

我认为如果我的MySQL密码包含'=',那么在使用Spring Boot部署时它会出现问题,因为我更改了密码并删除了'=',并且可以正常工作。

但是这些是随机生成的密码,我不确定将来在其他环境部署中该密码是否可能包含'='。

我正在像这样在application.properties中设置MySQL密码

spring.datasource.url=jdbc:mysql://hq-dev-xxx-westus-dbserver.mysql.database.azure.com:3306/xxx-dev
spring.datasource.username=dev-admin@dev-hq-westus-dbserver
spring.datasource.password=$AP=5ttfg{(=<WN

所以我的问题是如何分配带有'='的密码?

1 个答案:

答案 0 :(得分:1)

您可能知道Properties Class是具有一组键值对的文件。

Java将第一次出现的=或:作为键值分隔符,您可以在行中添加反斜杠转义符()。

为了避免错误,最好以这种方式以编程方式构建它:

import java.io.IOException;
import java.util.Properties;

public class TestSO {

  public static void main(String args[]) throws IOException{

      Properties props = new Properties();
      props.setProperty("spring.datasource.password", "$AP=5ttfg{(=<WN");
      props.store(System.out, null);
  }
}

这将打印正确的属性分配:

#Sat Jul 28 04:05:29 CLT 2018
spring.datasource.password=$AP\=5ttfg{(\=<WN //this line you have to put in your properties file