0

我正在尝试将数据建模工具 (DbSchema) 连接到在 Google Cloud SQL 中运行的 MySQL 数据库。云实例需要 SSL。我已经将必要的密钥下载到我的 Mac 上,并且可以通过某些工具进行连接,例如 Sequel Pro 和 MySQL Workbench。但是,这些工具让我可以将关键位置输入到它们的连接窗口中。但是,DbSchema 没有——它所做的只是让我修改它用来通过 JDBC 连接到数据库的连接字符串。

到目前为止,我所拥有的是:

jdbc:mysql://<MY IP ADDRESS>:3306?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useOldAliasMetadataBehavior=true&useSSL=true&verifyServerCertificate=false

尽管我使用的 PW 是正确的,但这最终给了我一个密码错误。我认为问题在于 JDBC 没有使用 SSL 密钥。有没有办法在这个连接字符串中指定 SSL 密钥的位置?

4

1 回答 1

2

这个MySQL JDBC (for SSL) 链接可以帮助你。请参阅设置客户端身份验证

获得要使用的客户端私钥和证书文件后,您需要将它们导入 Java 密钥库,以便 Java SSL 库和 Connector/J 可以使用它们。以下说明解释了如何创建密钥库文件:

  1. 将客户端密钥和证书文件转换为 PKCS #12 存档:

    shell> openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem \
      -name "mysqlclient" -passout pass:mypassword -out client-keystore.p12
    
  2. 将客户端密钥和证书导入 Java 密钥库:

    shell> keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 \
     -srcstorepass mypassword -destkeystore keystore -deststoretype JKS -deststorepass mypassword
    
  3. 设置 JDBC 连接属性:

    clientCertificateKeyStoreUrl=file:path_to_truststore_file 
    clientCertificateKeyStorePassword=mypassword
    
于 2018-05-09T04:17:03.280 回答