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

标签 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: Access denied for user ''@'localhost' (using password: NO) SQLState: 28000 VendorError: 1045

我查看了 api,其中一个 getConnection 变体采用用户名和密码,我提供了 root 和我的 root 密码。这也不起作用。

但除了这个特定的错误之外,我不仅仅是不确定在 linux 上从 java 连接到 mysql 时如何处理用户和密码。将我的根密码放在代码中的字符串文字中真的可以接受吗?我应该总是创建一个新的独立用户而不是 root 来连接到数据库吗?有没有更安全的地方可以放置我的用户名和密码以连接到 mysql?

最佳答案

我只是想总结评论中的答案。

首先您收到的错误意味着您提供了错误的登录凭据,或者您没有提供密码等必填字段。我猜你没有为 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. 重置密码 为 root@'localhost' 设置密码 = PASSWORD('password');

设计 DBMS 应用程序

  1. 以根用户身份登录 MySQL,并在您的 MySQL 服务器上创建一个用户。
  2. 如果您要从其他计算机连接您的 MySQL 数据库,您应该编辑配置,以允许从其他计算机进行绑定(bind)。
  3. 如果代码位于您的电脑上并且供个人使用,您可以将密码放在字符串文字中。否则,您可以使用 API 从服务器访问数据,如评论中所述。

关于java - 如何在 Linux 上使用用户名和密码连接到我的 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57086866/

相关文章:

java struts2 hibernate和spring应用程序和soap web服务

php - mysql返回GROUP BY查询中的最低列值

mysql - SQL order by 上面显示默认选项

mysql - 如何在SQL中创建时间属性?

c - 修改存在缓冲区溢出漏洞的C函数的返回地址

linux - 猫后的 ls 在 Linux 中不起作用

linux - Windows 插入未知字符。在 Linux bash 中显示为 ^?

java - Calendar.getTime() 返回不同的 Date 对象

java - 部署到 Glassfish 4.1 时无效的 URL 模式

java - 在重量级弹出窗口中,JTextField 得不到焦点