我在应用程序中使用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
所以我的问题是如何分配带有'='的密码?
答案 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