用javajdbc连接googlecloudsql数据库的方法

用javajdbc连接googlecloudsql数据库的方法,java,mysql,jdbc,google-cloud-sql,Java,Mysql,Jdbc,Google Cloud Sql,目前,我已经创建了一个简单的Java应用程序,它以正常方式连接到我的Google Cloud SQL数据库: 我唯一关心的是,这里的密码是纯文本的。它没有受到任何保护。我知道可以用类似的东西来保护源代码。此外,我还必须在谷歌云中注册我的外部IP地址,以使其正常工作 因此,我想知道是否可以使用某种OAuth方法建立到CloudSQL数据库的数据库连接。我更喜欢独立于计算机物理位置的连接方法,这样我就可以连接到任何我想要的地方(如果我有互联网连接) 有没有比上述方法更好的方法,或者这是唯一的方法?如

目前,我已经创建了一个简单的Java应用程序,它以正常方式连接到我的Google Cloud SQL数据库:

我唯一关心的是,这里的密码是纯文本的。它没有受到任何保护。我知道可以用类似的东西来保护源代码。此外,我还必须在谷歌云中注册我的外部IP地址,以使其正常工作

因此,我想知道是否可以使用某种OAuth方法建立到CloudSQL数据库的数据库连接。我更喜欢独立于计算机物理位置的连接方法,这样我就可以连接到任何我想要的地方(如果我有互联网连接)

有没有比上述方法更好的方法,或者这是唯一的方法?如果是这样,请让我知道如何保护纯文本密码


非常感谢您的帮助

不可能使用OAuth2来验证到云SQL的连接。您可以使用OAuth2身份验证API调用来创建新的临时用户名/密码对(和/或授权IP),然后使用该对进行连接,但是这并不会比简单地在应用程序中嵌入凭据增加任何额外的安全性

正如Razvan在他的评论中所说,从Android应用程序直接连接到云SQL实例几乎肯定是不安全的。此外,您将来不可能更改模式,因为您将在野外拥有旧版本的应用程序,无法控制其升级

以下是一些备选方案:

  • 使用,它是为移动和javascript的安全数据库使用而设计的
  • 开发自己的数据库支持API以满足移动应用程序的需要。应用程序要设置或检索的每一位数据都可以有一个单独的API调用,它可以在进行实际数据库调用之前执行您需要的任何授权或验证。你可以用它来为你做很多事情

问题并不明显,但此应用程序是在受信任的环境(应用程序服务器)中运行还是在不受信任的环境(移动应用程序)中运行?谢谢您的回答。它运行在一个不受信任的环境中。如果是这样,我建议不要在这些地方直接谈论MySQL(如果用户是反向工程,应用程序的连接方式将能够发出任意查询)。相反,您可以构建一个后端,该后端(1)公开一个只允许某些操作的API,(2)正确验证用户(例如OAuth2)。@RazvanMusaloiu-E。您可以举个例子吗?它只是创建一个应用程序引擎应用程序并允许它访问MySQL数据库吗?那么OAuth在哪里完成呢?从应用程序引擎应用程序中?提前谢谢。
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();
}