使用 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
我正在尝试 运行 对远程计算机上的 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