如何存储 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
文件中。
在获得用户输入后 => 存储到属性文件。
此外,在数据库中存储密码的良好做法是使用单向哈希。多种哈希方法对此都有好处:MD5
、SHA-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
}
我正在开发一个项目,该项目必须访问 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
文件中。
在获得用户输入后 => 存储到属性文件。
此外,在数据库中存储密码的良好做法是使用单向哈希。多种哈希方法对此都有好处:MD5
、SHA-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
}