play!连接mysql配置_如何使用Play Framework通过SSL连接到远程MySQL数据库?

小编典典

假设您已经为MySQL服务器设置了CA证书(使用Amazon RDS时就是这种情况),那么需要执行一些步骤来完成这项工作。

首先,应使用JDK随附的keytool将CA证书导入到Java

KeyStore文件中。在这种情况下,密钥库将包含我们要信任的所有CA证书。对于Amazon

RDS,可以在此处找到CA证书。随着mysql-ssl-ca-cert.pem在你的工作目录,可以运行下面的命令:

keytool -import -alias mysqlServerCACert -file mysql-ssl-ca-cert.pem -keystore truststore.jks

truststore.jks提示您输入KeyStore密码并询问您是否要信任证书后,它将创建一个新的Java

KeyStore文件(是,您愿意)。如果您已经有一个信任库文件,则可以运行相同的命令,替换truststore.jks为现有密钥库的路径(然后,系统将提示您输入现有密钥库的密码)。我通常将truststore.jks我的conf目录。

其次,application.conf您需要在数据库URL中添加一些JDBC URL参数:

verifyServerCertificate=true -如果无法验证主机证书,则拒绝连接。

useSSL=true -使用SSL连接。

requireSSL=true -如果MySQL服务器不支持SSL,则拒绝连接。

例如,如果您当前的数据库URL为:

db.default.url="jdbc:mysql://url.to.database/test_db"

那么现在应该是:

db.default.url="jdbc:mysql://url.to.database/test_db?verifyServerCertificate=true&useSSL=true&requireSSL=true"

最后,启动Play服务器以配置MySQL-Connector /

J将使用的信任库时,需要传递一些命令行选项。假设我的truststore.jks文件位于conf目录中,密码为password,我将以如下方式启动服务器(以开发人员模式):

activator run -Djavax.net.ssl.trustStore="conf/truststore.jks" -Djavax.net.ssl.trustStorePassword="password"

除此之外,我还想确保不使用SSL就无法连接到数据库,以防万一这些选项在应用程序级别被弄乱了。例如,如果使用db.default.user=root,则root在MySQL服务器中登录时,运行以下查询:

GRANT USAGE ON *.* TO 'root'@'%' REQUIRE SSL;

FLUSH PRIVILEGES;

2020-05-17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值