使用 java 代码查询远程计算机上的 sql 数据库

Querying an sql database on a remote machine using java code

我正在尝试 运行 对远程计算机上的 mysql 数据库进行一些查询。我在这台远程机器上没有管理员访问权限,所以我需要在这台机器上验证我的凭据,然后才能访问数据库(这也需要我的用户名和密码验证)。阅读此 post (Read remote file in java which needs username and password) 后,我可以了解如何使用身份验证访问远程计算机,并且我熟悉使用 DriverManager 对本地数据库进行 运行 查询;我只是不确定如何将这两种功能结合起来。有什么建议吗?

使用JDBChttp://docs.oracle.com/javase/tutorial/jdbc/basics/index.html。 你之前是怎么运行MySQL查询的?在 JDBC 中,您可以像访问本地机器一样访问远程机器(编辑:在代码中)。

编辑:本教程的信息有点丰富,所以这里有一些代码可以帮助您入门:

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static Connection co;
private Statement st;

public void connectDb(){
    try{
        String url = "jdbc:mysql://localhost/dataset"; //url to _DATABASE_ create as mysqlroot first!
    String user = "theuser";
    String password = "thepassword";

    Class.forName("com.mysql.jdbc.Driver");
    co = DriverManager.getConnection(url, user, password);
    st = co.createStatement();
    co.setAutoCommit(false);
} catch(Exception e){
    e.printStackTrace();
}
}

您需要获得 JDBC 驱动程序才能使用它(参见教程)!

您可以这样 运行 查询:

private ResultSet executeQuery(String query){
    ResultSet rs = null;
    try{
         rs = st.executeQuery(query);
         return rs;
        } catch(Exception e){
            System.out.println(query);
            e.printStackTrace();
        }
    return rs;
}

这就是更新的执行方式,请注意更新和查询之间的区别!

private void executeUpdate(String query){
    try{
        st.executeUpdate(query);//data manipulation = executeUpdate
        } catch(Exception e){
            System.out.println(query);
            e.printStackTrace();
        }
}

希望对你有帮助^^-d

您用来连接 mysql 数据库的用户似乎没有远程访问权限,因此您需要授予该用户远程访问权限。

root 用户身份在 mysql 服务器上执行以下查询以创建新用户并授予该用户远程访问权限 -

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

/etc/mysql/my.cnf 文件的行下方注释 -

bind-address = 127.0.0.1

并重启mysql服务器-

sudo service mysql restart