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

How can i store MySQL database password and username to access the database?

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

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

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

这是个好主意吗? 或者有什么好的方法可以做这类工作?

您可以将信息存储在属性文件中 (https://docs.oracle.com/javase/tutorial/essential/environment/properties.html), but should use encryption. See: How to encrypt String in Java

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

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

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

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

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

此外,在数据库中存储密码的良好做法是使用单向哈希。多种哈希方法对此都有好处:MD5SHA-256

但是,它只适用于一种方式。更多信息在这里 - MD5 algorithm Decryption in java.

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

db.username=MyUser
db.password=MyPassword

您可以为连接设置默认值。如果用户输入与它不匹配,只需打印一条警告消息,例如:"DB username or password is incorrect. Try again."

您可以使用类似 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
}