Java 使用JDBC连接到远程MySQL(主机gator)服务器时出错
我正在使用Eclipse,我正试图通过主机Gator连接到我的网站mysql数据库。这是到目前为止我在Eclipse的Main.java文件中的代码Java 使用JDBC连接到远程MySQL(主机gator)服务器时出错,java,mysql,eclipse,jdbc,Java,Mysql,Eclipse,Jdbc,我正在使用Eclipse,我正试图通过主机Gator连接到我的网站mysql数据库。这是到目前为止我在Eclipse的Main.java文件中的代码 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; //import java.sql.SQLException; //import com.mysql.jdb
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
//import java.sql.SQLException;
//import com.mysql.jdbc.Connection;
public class Main
{
public static void main(String[] args) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://19x.xxx.xxx.xxx:3306/kwinrow_storage","kwinrow_admin","xxxxxxx");
PreparedStatement statement = con.prepareStatement("SELECT * FROM post_data WHERE type= 'mixtape' ORDER BY id DESC LIMIT 15");
ResultSet result = statement.executeQuery();
while(result.next())
{
System.out.println(result.getString(1) + " " + result.getString(2));
}
}
}
这是来自控制台的错误:
Exception in thread "main" java.sql.SQLException: Access denied for user 'kwinrow_admin'@'c-69-247-142-223.hsd1.tn.comcast.net' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4226)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4158)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:926)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1748)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1288)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2508)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2541)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2323)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Main.main(Main.java:19)
线程“main”java.sql.SQLException中的异常:用户“kwinrow_admin”的访问被拒绝@'c-69-247-142-223.hsd1.tn.comcast.net'(使用密码:是)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:4226)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:4158)
在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:926)上
在com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1748)上
位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1288)
位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2508)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2541)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2323)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:832)
JDBC4Connection.(JDBC4Connection.java:46)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
Main.Main(Main.java:19)
我做错了什么?出于安全目的,HostGator将默认拒绝您对数据库的连接请求 您需要将ip地址添加到远程数据库访问主机列表中 以下是一个屏幕截图,以备您需要:
您可以使用或作为api连接到数据库: 以下是PDO中的一个示例:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$query ='SELECT * FROM post_data WHERE type=:type ORDER BY id DESC LIMIT 15';
$stmt = $dbh->prepare($query);
if ($stmt->execute(array(':type'=>'mixtape'))) {
$json = array();
while ($row = $stmt->fetch()) {
$json[] = $row;
}
echo json_encode($row);
}
我将数据编码为格式
现在,您的应用程序负责向该脚本发出请求并解码JSON数据。看起来您没有用户
kwinrow\u admin
的权限,或者您的密码错误。无论哪种方式,现在全世界都有了密码,你必须更改密码。我更改了ip和密码,希望能阻止搜索引擎爬虫找到它们。好的,我将把我的计算机的ip地址添加到主机gator remote access数据库主机。现在,如果我不在家里的机器上,应用程序将如何连接到数据库?我需要购买服务器吗?@user3290428因为直接连接到数据库从来都不是一个好主意,我建议您编写一个服务,将在您的服务器上运行,并将您的数据公开给外部授权的应用程序。好的,我将尝试一下……如果有任何示例或参考资料能为我指明正确的方向,我将不胜感激。您知道一些php吗?您熟悉哪种语言?您的解决方案确实有帮助,我现在通过eclipse访问我的数据库,我现在可以在模拟器中查看我的查询结果!!!!!