使用核心java程序没有密码的Mysql连接
Posted
技术标签:
【中文标题】使用核心java程序没有密码的Mysql连接【英文标题】:Mysql Connection with out password using corejava program 【发布时间】:2013-06-16 23:39:12 【问题描述】:我想连接到 mysql 数据库。安装 MySQL 时我没有提供任何密码,所以在我的程序中我做了同样的操作,但连接时出现错误。我正在使用属性文件来获取驱动程序、URL、用户名和密码。请帮帮我。
这是我的代码:
try
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/easylibdb1","root","");
catch (Exception e)
System.out.println("Got Error While Connecting To Database...!");
e.printStackTrace();
这是我的属性文件内容:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.1.51:3306/easylibdb1
user=root
password=""
【问题讨论】:
你能显示堆栈跟踪吗? 我遇到了错误:java.sql.SQLException: Access denied for user 'root'@'192.168.1.37' (using password: NO) 【参考方案1】:using password: NO
- 这意味着程序没有传递任何密码,在你的情况下是正确的。
由于您提到您正在从属性文件中读取值,因此我没有看到您在发布的代码中这样做。如果您确实在实际代码中从属性文件中读取值,并且 MySQL 服务器是远程服务器,那么请确保您授予相关权限 使用以下语句在远程 MySQL 服务器上
grant all privileges on easylibdb1.* to 'root'@'192.168.1.51'
允许来自 192.168.1.51 的连接
或
grant all privileges on easylibdb1.* to 'root'@'%'
允许来自任何地方的连接
【讨论】:
【参考方案2】:密码参数应该设置为null
,因为即使是空字符串""
也意味着存在密码。
DriverManager.getConnection("jdbc:mysql://localhost:3306/easylibdb1","root",null)
【讨论】:
【参考方案3】:删除属性文件中密码后的 2 个引号。
所以password=""
应该是password=
【讨论】:
对不起,我仍然收到此错误:java.sql.SQLException: Access denied for user 'root'@'192.168.1.37' (using password: NO)【参考方案4】:将null
作为密码而不是空字符串传递。那应该可以正常工作。
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/easylibdb1","root",null);
从我现在看到的情况来看,您实际上并没有使用属性文件中的值。
【讨论】:
【参考方案5】:如果您的属性文件中确实是password=""
,那么""
将作为密码发送。不是空字符串,而是两个引号。
【讨论】:
【参考方案6】:URL=jdbc\:mysql\://192.168.1.51:3306/easylibdb1
USER=root
PASSWD=
DRIVER=com.mysql.jdbc.Driver
请将您的密码字段设置为空白.. 不要放引号。
【讨论】:
是的,我这样做了,但我仍然觉得 java.sql.SQLException: Access denied for user 'root'@'192.168.1.37' (using password: NO) 因此,您将无法访问该特定 IP 地址。检查 mysql 的授权。 ***.com/questions/5016505/…【参考方案7】:con = DriverManager.getConnection("jdbc:mysql://localhost:3306/easylibdb1","root",null);
【讨论】:
这个答案出现在低质量审查队列中,大概是因为您没有解释代码。如果你确实解释了它(在你的回答中),你更有可能获得更多的支持——提问者实际上学到了一些东西!【参考方案8】:根据您的说法,您将用户名作为 root 传递,密码作为空字符串传递。您的连接是通过建立的
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/easylibdb1","root","");
所以把你的函数改成
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/easylibdb1","root",null);
然后它将起作用。
或者将application.properties
文件中的密码修改为
password=
【讨论】:
以上是关于使用核心java程序没有密码的Mysql连接的主要内容,如果未能解决你的问题,请参考以下文章