【问题标题】:Connecting java to MYSQL database in an amazon server在亚马逊服务器中将 java 连接到 MYSQL 数据库
【发布时间】:2014-08-15 14:58:40
【问题描述】:

我正在尝试将我的 java 代码与亚马逊中的 mysql DB 连接 rds,我正在使用此代码:

        try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        connection = DriverManager.getConnection(
        "jdbc:mysql://HOST:port_number/DB_name","DB_username", "DB_pass");
        st = connection.createStatement();
        rs = st.executeQuery("SELECT * FROM table name WHERE id = 1");
    } catch (Exception e) {
        System.out.println("DB error : " + e);
    }

我在运行它时遇到此错误:

DB error : java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.SocketException: java.net.SocketException: Permission denied: connect

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: java.net.SocketException: Permission denied: connect

STACKTRACE:

java.net.SocketException: java.net.SocketException: Permission denied: connect
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:143)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:225)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1805)
at com.mysql.jdbc.Connection.<init>(Connection.java:452)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DB.<init>(DB.java:15)
at subgroup.main(subgroup.java:72)


** END NESTED EXCEPTION **

任何想法!

【问题讨论】:

  • 尝试 ping 数据库服务器 URL 并检查您是否能够这样做
  • 我更新了我的 ans,因为它不是一个 url,因为它是一个 HOST,因为我正在使用 amazon RDS,dk 如果这会有什么不同的话,我尝试 ping 它,但结果是 request timed out. @NikhilTalreja
  • 看起来您的机器无法访问您的数据库服务器。

标签: java mysql sql-server jdbc socketexception


【解决方案1】:

就我而言,问题是我使用的是从模拟器到本地主机的连接。 如果您使用模拟器到 localhost,请不要在连接字符串中使用 localhost,127.0.0.1,而是使用:

10.0.2.2

希望对你有帮助

【讨论】:

    【解决方案2】:

    我改写您的命令,因为您将connection 变量设置为驱动程序管理器,但在您的语句中您使用con? 并且连接内的字符串将其替换为实际值,例如

    connect = DriverManager.getConnection("jdbc:mysql://localhost:3306", "<your DBUsername>", "<your DB Password>");
    

    下次不要只是复制粘贴,学习代码是如何工作的

    try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(
            "jdbc:mysql://HOST:port_number/DB_name","DB_username", "DB_pass");
            st = connection.createStatement();
            rs = st.executeQuery("SELECT * FROM table name WHERE id = 1");
        } catch (Exception e) {
            System.out.println("DB error : " + e);
        }
    

    【讨论】:

    • 这只是一个打字错误而已,谢谢
    • @AhmadBassiouny 哦,我明白了,如果您仍然需要帮助我愿意解决这个问题,请告诉我 :)
    • 好吧,我还是有同样的问题:)
    • @AhmadBassiouny 你能发送你的实际编码吗?如果可以的话,我会纠正它:)
    【解决方案3】:

    您需要从尝试读取数据库的位置授予对计算机的访问权限。

    您还应该使用命令提示符授予对 IP 的访问权限。

    http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html

    【讨论】:

      猜你喜欢
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多