如何检查mysql连接的默认端口号?连接不工作! jdbc 连接

Posted

技术标签:

【中文标题】如何检查mysql连接的默认端口号?连接不工作! jdbc 连接【英文标题】:How to check the default port number for mysql connection? Connection not working! jdbc connection 【发布时间】:2014-12-30 09:32:08 【问题描述】:

我正在尝试使用 java 文件中的 jdbc 连接数据库。它根本没有连接,并且不断给我错误“出了点问题”;我猜这是因为端口号,因为所有其他数据(例如用户名、密码和其他代码)似乎都是正确的。

我想检查默认端口号,以便我可以正确尝试。我确实尝试使用所有这三个 8080、80 和 3306,但它显示错误。

这里8080端口用于HTTP服务器,3306应该是研究默认的,80是随机的。

try 
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Driver found");
     catch (ClassNotFoundException e) 
        System.out.println("Driver not found");
    

    String url="jdbc:mysql://localhost:8080 or 80 or 3306 or without port number/test";
    String user="user";
    String password="";

    Connection con=null;

    try 
        con=DriverManager.getConnection(url, user, password);
    System.out.println("Success");
     catch (SQLException e)
         e.printStackTrace();
    

使用 String url="jdbc:mysql://localhost:3306/test";

  Driver found
  com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

   The last packet sent successfully to the server was 0 milliseconds ago. The driver has not     received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:338)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2232)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.town.connect.Dbconnection.main(Dbconnection.java:26)
  Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:382)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:241)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:228)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:431)
at java.net.Socket.connect(Socket.java:527)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:213)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:297)
... 15 more

【问题讨论】:

端口 8080 是 Tomcat 端口。 MySQL 几乎不可能使用该端口。通常的 MySQL 端口是 3306,如果您从 URL 中完全省略它,您将得到它。注意 Class.forName() 行已经七年不需要了。 使用'3306'端口时抛出的错误是什么? 使用'e.printStacktrace()' 而不是'sop("something went wrong")'。在您的问题中发布相同的错误堆栈。 您一直在尽力掩盖的潜在错误是“连接被拒绝”。这意味着您在连接 URL 中获取了错误的 IP 地址或端口号。而已。 MySQL 服务器真的在运行吗? 所以你的问题得到了回答?与您在@sol4me 的回答下的说法相反?注意 phpMyAdmin 和 XAMPP 都与这个问题无关。 【参考方案1】:

您可以通过

访问这些设置
mysql> show variables;

【讨论】:

非常感谢。我发现它一直在使用 3306 端口号,但我确实尝试使用此端口号,但它仍然向我显示错误。知道我在哪里犯错了吗? @SandeshRana 你在用 java 7 吗? @SandeshRana 它仍然显示 what 错误?您没有在问题或 cmets 中提供错误消息。当然,除了你自己的愚蠢错误信息。异常本身的消息是必需的。【参考方案2】:
DriverManager.getConnection("jdbc:mysql://"+dbaddress+"/"+dbname+"?user=" + username + "&password=" + password)

此声明可以帮助您。无需定义任何其他端口。只需根据您的 mysql 配置定义以下变量即可。

数据库地址 数据库名称 用户名 密码

如果这不起作用,您可以为您的错误发布堆栈跟踪或屏幕截图吗?

【讨论】:

不清楚他不需要定义端口。问题中没有提供足够的信息来确定这一点。 我同意你的观点@EJP。但它值得一试。如果不起作用,我已要求提供屏幕截图或堆栈跟踪。要解决此问题,需要更多信息。【参考方案3】:

如果你想知道端口号可以使用以下命令

在 Variable_name = 'port' 处显示变量;

【讨论】:

以上是关于如何检查mysql连接的默认端口号?连接不工作! jdbc 连接的主要内容,如果未能解决你的问题,请参考以下文章

数据库端口如果是3307的话 无法连接mysql 如何解决?

数据库连接不成功,请检查配置!怎么办?怎么处理?

windows下如何查看和修改MySQL的端口号

tableau连接mysql时,出现无法连接服务器,检查服务器是不是正在运行以及您是不是有权访问?

oracle 11g修改端口号后连接不上

如何从外网SSH连接内网服务器