java jdbc mysql : how to store credentials in properties file with special characters?

标签 java mysql jdbc

我正在尝试使用 JDBC 和 java 程序连接到 MySQL。该程序从属性文件中读取以获取凭据(url、用户名、密码)。我们在密码中使用特殊字符,例如^、&、*、@。

属性文件的一部分如下所示:

mysql.username=bob
mysql.password=th1$is^my@pa$$w*rd   (not the real password, but for the sake of discussion)

堆栈跟踪中的错误如下所示: 错误:无法连接到数据库:[43008] 访问被拒绝:用户“bob”@“(使用密码:YES)

我确认该程序能够读取密码(通过将其打印到控制台)。看起来我缺少某种转义序列?

在谷歌上搜索并询问了一些同事,但似乎没有人知道答案。

感谢任何帮助。提前致谢。

最佳答案

the error from the stack trace looks like this: ERROR: unable to connect to db: [43008] Access denied: for user 'bob'@''

这就是您的答案,更具体地说是 'bob'@'' 代码段。这告诉你,在没有主机(或空主机)上使用 bob 正在尝试连接到你的 MySQL 数据库,我几乎可以肯定这不是你想要做的。

解决方案在于确保您有正确的 URL 来连接数据库:

String url = "jdbc:mysql://"+HOST+"/" + DB; //Double check your HOST constant

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(url, userName, password);

希望对您有所帮助。干杯

编辑:

看来您正在以正确的方式存储通行证,您应该在属性文件中转义的唯一字符是:

\t \n \r \\ \" \' \ (space) \= \:

关于java jdbc mysql : how to store credentials in properties file with special characters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12682949/

相关文章:

Java-TestNG : Read an excel file, 通过 TestNG 和 Apache POI 断言并写回 excel 文件

java - 阿克曼函数

php - 使用php pdo在数据库表中插入空值

jdbc - 了解 JDBC 跟踪日志

java - 生成 Math.random 数(0 或 1)的问题

java - 如何运行 JAR 文件

python - Django注册模块

mysql - 在 MySQL 数据库中存储文章的字段/数据类型

java - getConnection 是否总是打开一个新连接?

java - 如何将连接传递给 Mybatis