使用核心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连接的主要内容,如果未能解决你的问题,请参考以下文章

MySql命令集合

mysql 找回密码

Mysql命令大全

Linux 下MySql 重置密码

linux下mysql的root密码忘记办法

MySQL常用操作设置更改root密码连接MySQLMySQL常用命令