java - 使用 JDBC 连接到远程 MySQL(host gator)服务器时出错

标签 java mysql eclipse jdbc

我正在使用 Eclipse,我正在尝试通过 Host 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.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)

我做错了什么?我错过了什么

最佳答案

出于安全考虑,HostGator 默认会拒绝您对数据库的连接请求。

您需要将您的 IP 地址添加到远程数据库访问主机列表中。

这里有一个屏幕截图,以备不时之需:

enter image description here


您可以使用 PDOmysqli作为连接到数据库的 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 格式。

现在您的应用负责向此脚本发出请求并解码 JSON 数据。

关于java - 使用 JDBC 连接到远程 MySQL(host gator)服务器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089874/

相关文章:

java - 让球在 Canvas 上弹起

java - 使用 POST 方法的 Spring 和 ExtJS “Bad Request”

java - Java 中的这个表达式是什么(1 << 2)?

php - 简单的子查询?

java - 如何在JSON中添加根节点

java - 在 java 中对 Arraylist<String> 的 ArrayList 进行排序

php - 比较两个交叉引用列表

java - 不支持UTF-8字符

java - GWT 项目在开发模式下正确读取属性文件,但在部署时找不到它

java - Eclipse 会自动导入 R