【问题标题】:Java SQL Connection Not FunctioningJava SQL 连接不起作用
【发布时间】:2019-10-10 03:12:44
【问题描述】:

当我连接到我的 MYSQL 数据库(托管在 phpmyadmin 上的托管域上,而不是 localhost)时,我收到一个错误,我被拒绝完全访问服务器。到底是怎么回事?我对如何使用这个库方法不是很熟悉并且很困惑。

Connection connection;
try 
{
   connection = 
  DriverManager.getConnection("jdbc:mysql://WEBSITENAME.com/DATABASENAME0", 
   "DATABASEUSERNAME", "DATABASEPASSWORD");
   Statement sql = connection.createStatement();
   ResultSet myRs = sql.executeQuery("SELECT * FROM table");

while(myRs.next()) 
{
  System.out.println(myRs.getString("column"));
}

} catch (SQLException e) 
{
   e.printStackTrace();
}

提供的错误如下:

java.sql.SQLException: Access denied for user 'user'@'IP ADDRESS IS LISTED IS LISTED HERE' (使用密码: YES) 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) 在 com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) 在 com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) 在 com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:455) 在 com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) 在 com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199) 在 java.sql.DriverManager.getConnection(未知来源) 在 java.sql.DriverManager.getConnection(未知来源) 在 jDgmj8pWUnXVoHZk04z9.sqlConnect.updateCommand(sqlConnect.java:12) 在 jDgmj8pWUnXVoHZk04z9.Driver.main(Driver.java:10)

【问题讨论】:

    标签: java mysql sql phpmyadmin


    【解决方案1】:

    托管服务的常见问题,例如如今的托管 DB/DBaaS。许多托管服务提供商默认拒绝所有,并期望不允许从匿名 Internet IP 入站的数据库连接,也就是。 (a) 他们的平台或 (b) 他们的子网之外的任何东西。

    如果其他推荐的测试不起作用(如 telnet),请询问您的数据库提供商是否维护白名单以及他们如何提供异常。这通常是通过许多托管服务提供商的自助票务系统完成的。

    或者您可以在同一托管服务提供商上共同托管您的 Java 应用程序吗?就像通过与数据库实例在同一子网上的基本虚拟机/实例?

    【讨论】:

    • 当我使用 telnet 时收到此消息,您知道这是什么意思吗? imgur.com/a/va0DurL
    【解决方案2】:

    可能问题之一是服务器,检查是否允许用户从本地主机外部连接,或者检查您的用户是否允许这样连接:user@IPAddress

    【讨论】:

    • 当我执行 telnet 时,我收到这条消息,任何关于这意味着什么的线索:imgur.com/a/va0DurL
    【解决方案3】:

    对此我有两个想法:

    1. 通常,您的 MySQL 会拒绝来自其他主机的连接。您必须在配置文件中进行配置(请参阅here)。如果您无法访问配置文件,则必须询问您的管理员。

    2. 此外,您应该检查端口 3306(用于 TCP 连接的 MySQL 默认端口)是否已打开。如果防火墙阻止该端口,您将无法连接。在 Windows 中,您可以使用 telnet(如果启用)进行检查:

    telnet WEBSITENAME.com 3306
    

    没有错误信息(空白cmd)表示连接已建立。

    【讨论】:

    • 这看起来像是来自服务器的答案。这告诉我们您可以在所用端口上与主机建立 TCP 连接。那么问题出在您的 MySQL 配置中。请参阅我的答案或贾斯汀答案中的#1。
    猜你喜欢
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多