DbSchema连接Google Cloud SQL MySQL:如何在JDBC串中指定SSL密钥?
解决DbSchema通过JDBC连接Google Cloud SQL MySQL的SSL密钥配置问题
没问题!你可以直接在JDBC连接字符串中添加SSL相关参数来指定密钥文件的存储路径——这正是解决你当前问题的核心:Cloud SQL要求SSL认证,你的现有连接串仅开启了SSL但未指定密钥文件,导致数据库端无法完成SSL验证,进而抛出类似密码错误的提示(实际是SSL认证失败)。
需要添加的JDBC SSL参数
你需要在现有连接串后追加以下参数(根据你下载的密钥文件路径调整):
clientCertificateKeyStoreUrl:指定客户端证书(client-cert.pem)的绝对路径,Mac系统需以file:///开头,例如file:///Users/你的用户名/Downloads/client-cert.pemclientCertificateKeyStorePassword:如果你的客户端密钥设置了密码则填写,无密码可设为空字符串""clientCertificateKeyStoreType:由于Google Cloud SQL下载的是PEM格式证书,此处填PEMtrustCertificateKeyStoreUrl:指定CA证书(server-ca.pem)的绝对路径,同样以file:///开头trustCertificateKeyStorePassword:CA证书的密码,无密码则填""trustCertificateKeyStoreType:同样填PEM- 额外建议:将
requireSSL=true加入连接串,强制使用SSL连接;同时把verifyServerCertificate=true改为true(有CA证书的情况下更安全,之前设为false可能干扰认证逻辑)
完整的JDBC连接串示例
jdbc:mysql://<MY IP ADDRESS>:3306/你的数据库名称?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useOldAliasMetadataBehavior=true&useSSL=true&requireSSL=true&verifyServerCertificate=true&clientCertificateKeyStoreUrl=file:///Users/xxx/Downloads/client-cert.pem&clientCertificateKeyStorePassword=&clientCertificateKeyStoreType=PEM&trustCertificateKeyStoreUrl=file:///Users/xxx/Downloads/server-ca.pem&trustCertificateKeyStorePassword=&trustCertificateKeyStoreType=PEM
注意事项
- 替换
<MY IP ADDRESS>为你的Cloud SQL实例公网IP,同时记得补充具体的数据库名称(你的原连接串未指定,这也可能导致连接异常) - 确保密钥文件的路径是正确的绝对路径:Mac上可右键文件→「显示简介」复制路径,再加上
file:///前缀(注意是三个斜杠) - 如果你的密钥文件有密码,务必填写对应的
Password参数值
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

