我正在做一个概念验证,使用flyway的命令行工具从一个集中的服务器部署到多个数据库平台。(MySQL、Postgres和SQL Server)
我可以在没有SSL的情况下成功部署,但是它使用了未加密的主机信息,比如到目标数据库服务器的登录/密码/端口。我担心的是,未加密的流量可能会被看到。
是否有人有使用SSL部署到MySQL SQL Server的flyway命令行工具的经验
我没有在文档中看到任何信息,除非我错过了它。
感谢您的帮助和建议!
发布于 2017-04-20 12:59:16
在flyway.conf中的flyway示例中,它展示了如何向jdbc url添加附加值。
# MySQL : jdbc:mysql://<host>:<port>/<database>?<key1>=<value1>&<key2>=<value2>...
# PostgreSQL : jdbc:postgresql://<host>:<port>/<database>?<key1>=<value1>&<key2>=<value2>...
# Redshift : jdbc:postgresql://<host>:<port>/<database>?<key1>=<value1>&<key2>=<value2>... 例如,对于Redshift/Postgres,您可以包含ssl=true标志
flyway.url=jdbc:postgresql://yourserver:5439/dbname?ssl=true您需要将DB服务器密钥用来签名的公钥添加到您的主机信任存储中(对于Redshift,请参阅http://docs.aws.amazon.com/redshift/latest/mgmt/connecting-ssl-support.html了解详细信息),例如
${JAVA_HOME}/bin/keytool -keystore ${JAVA_HOME}/lib/security/cacerts -import -alias <alias> -file <certificate_filename>然后,我不得不修改flyway启动脚本/flyway,以便在JAVA_ARGS中包含信任库和密码(它可能应该将这些作为变量)。
JAVA_ARGS="-Djava.security.egd=file:/dev/../dev/urandom -Djavax.net.ssl.trustStore=/etc/pki/java/cacerts -Djavax.net.ssl.trustStorePassword=changeit"发布于 2018-08-23 15:37:19
对于MySQL,我使用下面的URL进行连接。
jdbc:mysql://hostname:3306/wpastudy?useSSL=true
请注意useSSL=true参数。
https://stackoverflow.com/questions/34816448
复制相似问题