Я использую Spring boot в своем приложении, и у нас есть Azure Services для развертывания, а также для сервисов MySQL.
Я могу подключить MySQL к MySQL workbench, но он дает мне ошибку при развертывании приложения загрузки Spring, которое
Caused by: java.sql.SQLException: Access denied for user 'dev-admin'@'IP' (using password: YES)
Я предполагаю, что если мой пароль MySQL содержит '='
то он возникает при развертывании с Spring Boot, потому что я сменил пароль и удалил '='
и он работает.
Но это случайный сгенерированный пароль, и я не уверен, может ли пароль содержать "=" в будущем с другим развертыванием среды.
Я устанавливаю пароль MySQL в application.properties как это
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
Поэтому мой вопрос: как назначить пароль с '='?
Как вы можете знать, Properties Class - это файл с набором пар значений ключа.
поскольку Java обрабатывает первое вхождение = или: в качестве разделителя значения ключа вы можете поместить обратную косую черту escape() в свою строку.
Чтобы избежать ошибок, рекомендуется создать его программно так:
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