目前,我已经创建了一个简单的Java应用程序,它以正常方式连接到我的Google Cloud SQL数据库:try {Class.forName(com.mysql.jdbc.Driver);Connection con = DriverManager.getConnection(jdbc:mysql://-google-clo...
![](https://oss.womengda.net/imgfile/2310/1ER0601AK50-3P28.jpg)
目前,我已经创建了一个简单的Java应用程序,它以正常方式连接到我的Google Cloud SQL数据库:
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://-google-cloud-sql-ip:-port-/-projectname-","-user-","-password-");
Statement st = con.createStatement();
}
catch (Exception ex) {
ex.printStackTrace();
}
我唯一担心的是密码是以纯文本形式放在这里的.它不受任何保护.我知道可以用yGuard之类的东西来保护源代码.另外,我必须在Google Cloud中注册我的外部IP地址才能使用它.
因此,我想知道是否可以使用某种OAuth方法建立与Cloud SQL数据库的数据库连接.我更喜欢一种独立于计算机物理位置的连接方法,所以我可以连接任何我想要的地方(如果我有互联网连接).
有没有比上面提到的方法更好的方法,还是这是唯一的方法?如果是这样,请告诉我如何保护明文密码.
任何帮助深表感谢!
解决方法:
无法使用OAuth2验证与Cloud SQL的连接.您可以使用OAuth2经过身份验证的API调用来创建新的临时用户名/密码对(和/或授权IP),然后使用它进行连接,但这不会增加任何额外的安全性,只需在应用程序中嵌入凭据即可.
正如Razvan在他的评论中建议的那样,从Android应用程序直接连接到您的Cloud SQL实例几乎肯定是不安全的.此外,您将来不可能进行架构更改,因为您将无法控制升级的旧版本应用程序.
以下是一些替代方案:
>使用Firebase,专为从移动设备和JavaScript使用安全数据库而设计.
>开发自己的数据库支持的API,以满足您的移动应用程序的需求.您的应用程序要设置或检索的每个数据位都可以有一个单独的API调用,可以在进行实际数据库调用之前执行所需的任何授权或验证.您可以使用Google Cloud Endpoints为您完成大部分工作.
本文标题为:使用Java JDBC连接Google Cloud SQL数据库的方法
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- 基于Ant路径匹配规则AntPathMatcher的注意事项 2023-08-07
- SpringMVC深入讲解文件的上传下载实现 2023-01-23
- 使用SSM+Layui+Bootstrap实现汽车维保系统的示例代码 2023-08-10
- Java使用sleep方法暂停线程Thread 2023-08-07
- 使用JAVA从CSV更新MySQL 2023-11-02
- springboot项目启动后执行方法的三种方式 2023-01-12
- 永中文档在线转换服务Swagger调用说明 2022-12-12
- spring boot集成smart-doc自动生成接口文档详解 2023-05-25
- Java中5种异步实现的方式详解 2023-05-19
- java数据结构循环队列的空满判断及长度计算 2022-12-03