如何检查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 如何解决?