gpt4 book ai didi

mysql - 使用 JDBC 从任何计算机访问 localhost 数据库

转载 作者:行者123 更新时间:2023-11-29 20:54:13 24 4
gpt4 key购买 nike

首先,如果这在任何方面都是重复的,我深表歉意,但几个小时以来我一直在这个网站上尝试许多不同的事情,但没有成功。郑重声明,我运行的是 OS X 10.11.5。

我使用 JDBC 创建了这个简单的应用程序来连接到我创建的存储在本地主机上的数据库(我正在使用 phpMyAdmin,如果这有帮助的话):

@Override
public void actionPerformed(ActionEvent e) {

// The ID to search for
int search = Integer.parseInt(textField.getText());
// Setting up the connection to the database.
String url = "jdbc:mysql://my_ip_address:3306/javaDatabase";
String user = "root"; // root user
String password = ""; // no password
Connection con = null;
PreparedStatement searchID; // I used a prepared statement so I could include user input
ResultSet result = null; // results after SQL execution

try {
con = DriverManager.getConnection(url, user, password); // connect to MySQL
// Creating the prepared statement
searchID = con.prepareStatement("SELECT * FROM Names WHERE ID = ?");
// Setting the parameter to the user input
searchID.setInt(1, search);
result = searchID.executeQuery(); // execute the SQL query

while (result.next()) { // loop until the end of the results

String ID = result.getString("ID");
String FirstName = result.getString("FirstName");
String LastName = result.getString("LastName");

textArea1.setText("ID: " + ID + "\n" +
"First Name: " + FirstName + "\n" +
"Last Name: " + LastName + "\n");
}
} catch(SQLException e1) {
System.out.println("Exception caught " + e1.getMessage());
} finally {
try {
if (result != null) {
result.close();
}

if (con != null) {
con.close();
}
} catch(SQLException e2) {
System.out.println("SQLException caught " + e2.getMessage());
}
}
}

public static void main(String[] args) {

JavaWithSQL newJava = new JavaWithSQL();

}

现在,我将此应用程序打包为可执行的 .JAR 文件,并希望能够在其他人的计算机上运行它并让它访问数据库并返回记录。

我已尝试来自 here 的说明和 here ,没有任何运气。我查看了在 Mac 上打开端口 3306,但我的防火墙已关闭,但这似乎不是问题所在。我还尝试使用以下方法对相关数据库使用 GRANT 权限:

GRANT ALL PRIVILEGES ON javaDatabase.* TO '%'@'%' IDENTIFIED BY '';

无济于事。但是,当我明确写入计算机的 IP 地址时,它确实可以在其他计算机上工作,如下所示:

GRANT ALL PRIVILEGES ON javaDatabase.* TO 'root'@'other_computer_ip' IDENTIFIED BY '';

但我需要能够在讲师的计算机上运行它,理论上也可以在其他人的计算机上运行,​​而不必知道每个人的 IP 地址。

我该怎么做?我错过了什么吗?

编辑:

好的,我已经运行了命令

GRANT SELECT ON javaDatabase.* TO 'remoteUser'@'%' IDENTIFIED BY '';
FLUSH PRIVILEGES;

现在它可以在连接到同一网络的任何计算机上完美运行,但即使我连接到不同的网络,我也需要它正常工作。

我真的需要一个关于这个问题的指导。

最佳答案

您正在使用TO '%'@'%' IDENTIFIED BY '';

我不确定这是否有效。在您的情况下,它应该针对 root 用户。


将 javaDatabase.* 上的所有权限授予 'root'@'%' IDENTIFIED BY '';

关于mysql - 使用 JDBC 从任何计算机访问 localhost 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37762279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com