如何在GitHub上隐藏MySQL连接字符串-用户名和密码(Java)

4

我一直在试图找到解决目前困境的办法。因此,我正在创建一个简单的POS系统小项目,使用Oracle MySQL数据库存储用户密码、商品名称、价格等信息。我使用Amazon AWS作为主机。当我在代码中与它连接时,我使用

Connection conn=DriverManager.getConnection("amazon host url","some username","somepassword");

一些用户名、密码和亚马逊主机网址是我代码中的真实值,我只是出于明显原因使用它们。

现在,如果我将我的代码上传到Github,那么我的MySQL连接将变为公共的,人们可以连接到它。如何隐藏这些信息,但仍然将我的代码上传到Github?我已经在网上寻找了解决方案,但只能看到有关PHP的解决方案,如果有人能帮助我解决这个问题,那就太好了。


2
创建属性文件并在其中添加您的“用户名,密码,dburl”,然后将该属性文件添加到“.gitignore”中。 - Kalaiselvan
什么是属性文件?我应该将用户名、密码和数据库URL添加到文本文件中吗?然后在我的代码中通过读取文件中的行来获取它们? - Kevin Lin
是的!你说得对,但它不是文本文件,而是“属性”文件。 - Kalaiselvan
1个回答

4

属性文件

可以根据属性键获取属性值。Properties 类提供了从属性文件获取数据和将数据存储到属性文件中的方法。此外,它还可以用于获取系统的属性。

属性文件的优点

如果从属性文件更改信息,则无需重新编译:如果从属性文件更改任何信息,则不需要重新编译 Java 类。它用于存储经常更改的信息。

要从属性文件获取信息,请创建属性文件名为.dbconfig.properties

 #DB Properties
 db.driver="driverclassname"
 db.url=jdbc:mysql://localhost:3306/YOURDBNAME
 db.username=USERNAME
 db.password=PASSWORD

.gitignore 文件可以忽略你的 dbconfig.properties 文件,以便在提交到公共仓库时不会被上传。有关更多关于 gitinore 的信息,请参考: https://git-scm.com/docs/gitignore

关于 .gitignore 文件。

 /resources/dbconfig.propreties/

在Java文件中读取属性文件数据的Java类
 private ResourceBundle reader = null;
 try{ 
     reader = ResourceBundle.getBundle("dbconfig.properties");
     Connection conn=DriverManager.getConnection(reader.getString("db.url"),reader.getString("db.username"),reader.getString("db.password"));
 }catch(Exception e){
}

1
OP会很高兴得到这个解决方案,但是你没有添加任何解释,比如为什么他应该使用它,这个属性是什么,他如何重复使用等等。仅仅向OP分享代码可能对他有用,也可能无用。 - Ravi
@KalaiselvanA,我正在尝试使用您的解决方案,但每当我将我的项目上传到GitHub时,dbconfig.properties文件仍会被上传到GitHub上。我不确定为什么会这样。 - Kevin Lin
@KevinLin,你能分享一下你的.gitignore文件吗? - Kalaiselvan
/src/dbconfig.properties/ 我把它放到了我的NetBeans项目的src文件夹中。 - Kevin Lin
当我尝试从属性文件中获取信息时,出现了这个异常。线程"AWT-EventQueue-0"中的异常java.util.MissingResourceException: 找不到基本名称为dbconfig.properties的资源包,区域设置为en_US。 - Kevin Lin
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接