我写了一些Java代码来连接到我在mysql中创建的数据库。
我以前从未使用过mysql。我刚安装,并运行“ sudo mysql”,然后允许我创建数据库并添加表。
连接到数据库的Java代码如下。...
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb");
} catch (SQLException ex) {
// handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
当我尝试运行此代码时,将引发异常,并按如下所示打印出来...
SQLException:对用户“ @'localhost”的访问被拒绝(使用密码: 否)SQLState:28000 VendorError:1045
我查看了api,其中的getConnection变体之一使用了用户名和密码,并提供了root和root密码。这也不起作用。
除了这个特定的错误之外,我不仅不确定在Linux上从Java连接到mysql时如何处理用户名和密码。将我的root密码放在代码的字符串文字中真的可以接受吗?是否应该始终以root用户身份创建一个新的单独用户以连接数据库?有没有更安全的地方可以放置我的用户名和密码来连接到mysql?
答案 0 :(得分:0)
我只是想总结评论中的答案。
首先,您遇到的错误表示您提供的登录凭据错误,或者未提供必填字段(例如密码)。我想您尚未为MySQL中的root用户设置密码。
请尝试mysql -u root -p
,然后在提示您输入密码时按Enter
。如果出现错误,请说ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
作为密码root
。
尝试使用此方法连接到MySQL。
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password");
如果上述方法均无效,请尝试重设root密码,如Ubuntu Help page
中所述使用密码登录MySQL mysql -u root -p
使用
SET PASSWORD FOR root@'localhost' = PASSWORD('password');
设计DBMS应用程序