0

我正在尝试使用带有 java 程序的 JDBC 连接到 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'@''(使用密码:是)

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

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

任何帮助表示赞赏。提前致谢。

4

1 回答 1

1

堆栈跟踪中的错误如下所示:错误:无法连接到数据库:[43008] 访问被拒绝:对于用户'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) \= \:
于 2012-10-02T00:33:17.767 回答