如何在Linux上使用用户名和密码连接到我的MySQL数据库

时间:2019-07-18 03:50:50

标签: java mysql linux jdbc

我写了一些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?

1 个答案:

答案 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

中所述
  1. 使用密码登录MySQL mysql -u root -p

  2. 使用 SET PASSWORD FOR root@'localhost' = PASSWORD('password');

设计DBMS应用程序

  1. 以root用户身份登录到MySQL,并在您的MySQL服务器上创建一个用户。
  2. 如果要从其他计算机连接MySQL数据库,则应编辑配置,以允许从其他计算机进行绑定。
  3. 如果代码驻留在您的PC上并且仅供个人使用,则可以将密码输入字符串文字中。否则,如注释中所述,您可以使用API​​从服务器访问数据。