如何存储MySQL数据库密码和用户名来访问数据库?

时间:2017-03-21 07:16:16

标签: java mysql passwords password-protection

我正在开发一个项目,该项目必须访问MySQL数据库用户名和密码才能读取和更新用户数据库。

最初我直接将数据库的用户名和密码写入我的代码。 但是我的老师让我创建一个提示框,它会在程序的第一次运行时使用用户名和密码,而不是再次。 因此,如果这样做,我将无法在下次访问数据库。

我想将该用户名和密码存储到本地文本文件中。

这是个好主意。 或者有什么好方法可以做这种工作?

3 个答案:

答案 0 :(得分:2)

您可以将信息存储在属性文件(https://docs.oracle.com/javase/tutorial/essential/environment/properties.html)中,但应使用加密。请参阅:How to encrypt String in Java

答案 1 :(得分:1)

在您的情况下,最好的方法是存储在.properties文件中。

获得用户输入后=>存储到属性文件。

此外,在DB中存储密码的良好做法是使用 单向哈希 。各种哈希方法都适用于此:MD5SHA-256等。

但是,它仅适用于单向。更多信息 - MD5 algorithm Decryption in java

在您的情况下,属性文件应该足够了 db.properties的示例:

db.username=MyUser
db.password=MyPassword

您可以拥有连接的默认值。如果用户输入与之匹配,则只需打印一条警告消息,例如:"数据库用户名或密码不正确。再试一次。"

您可以使用JOptionPane之类的内容向用户询问:

public void start() throws CreateDocumentConfigurationException {
    // Custom button text
    Object[] options = {"Yes, please", "Use default instead"};

    int n = JOptionPane.showOptionDialog(null,
            "Would you like to enter DB credentials?",
            "DB Question", JOptionPane.YES_NO_CANCEL_OPTION,
            JOptionPane.QUESTION_MESSAGE, null, options, options[1]);

    estimateUserInput(n); // process result here. 0 - for entering new one, 1 - for using default
}

答案 2 :(得分:0)

您可以将数据库登录信息存储在配置文件中。

对于桌面应用程序, .properties文件可以使用

对于基于Web的应用程序, 将密码存储在Apache Tomcat服务器的context.xml中。