Tôi đang chạy Ubuntu và cuối cùng đang cố gắng kết nối Tomcat với cơ sở dữ liệu MySQL của tôi bằng JDBC.Không thể kết nối với MySQL với JDBC - Thời gian chờ kết nối - Ubuntu 9.04
Nó đã hoạt động trước đây nhưng sau khi khởi động lại phiên bản hiện không kết nối được.
- Cả Tomcat 6 và MySQL 5.0.75 là trên cùng một máy
- kết nối chuỗi: jdbc: mysql: /// localhost: 3306
- tôi có thể kết nối với MySQL trên dòng lệnh bằng cách sử dụng
mysql
tập lệnh - các my.cnf là khá chuẩn (Khả dụng trên yêu cầu) đã ràng buộc địa chỉ: 127.0.0.1
- tôi không thể Telnet vào cổng MySQL mặc dù netstat nói MySQL đang lắng nghe
- tôi có một quy tắc iptables để chuyển tiếp 80 -> 8080 và không có tường lửa tôi biết.
Tôi khá mới với điều này và tôi không chắc chắn những gì khác để kiểm tra. Tôi không biết liệu mình có nên tìm kiếm trong các giao diện vv hay không và nếu tôi đã làm gì để tìm kiếm. Thật kỳ lạ vì nó được sử dụng để làm việc nhưng sau khi khởi động lại nó xuống vì vậy tôi phải có thay đổi một cái gì đó .... :).
Tôi nhận ra thời gian chờ cho biết máy chủ không phản hồi và tôi cho rằng đó là do yêu cầu không thực sự được thực hiện. Tôi đã cài đặt MySQL thông qua apt-get và Tomcat theo cách thủ công.
mysqld xử lý
[email protected]:/var/log/mysql# ps -ef | grep mysqld
root 21753 1 0 May27 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql 21792 21753 0 May27 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root 21793 21753 0 May27 ? 00:00:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root 21888 13676 0 11:23 pts/1 00:00:00 grep mysqld
Netstat
[email protected]:/var/log/mysql# netstat -lnp | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 21792/mysqld
unix 2 [ ACC ] STREAM LISTENING 1926205077 21792/mysqld /var/run/mysqld/mysqld.sock
Toy kết nối Lớp
[email protected]:~# cat TestConnect/TestConnection.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestConnection {
public static void main(String args[]) throws Exception {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Got driver");
con = DriverManager.getConnection(
"jdbc:mysql:///localhost:3306",
"uname", "pass");
System.out.println("Got connection");
if(!con.isClosed())
System.out.println("Successfully connected to " +
"MySQL server using TCP/IP...");
} finally {
if(con != null)
con.close();
}
}
}
Đầu ra lớp kết nối đồ chơi
Lưu ý: Đây là lỗi tương tự tôi nhận được từ Tomcat.
[email protected]:~/TestConnect# java -cp mysql-connector-java-5.1.12-bin.jar:. TestConnection
Got driver
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 1 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:409)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
at TestConnection.main(TestConnection.java:14)
Caused by: 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:409)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2181)
... 12 more
Caused by: java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
... 13 more
Telnet Output
[email protected]:~/TestConnect# telnet localhost 3306
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection timed out
Điều này dẫn tôi đến câu trả lời đó là giao diện lo bị hỏng. * Treo đầu xấu hổ *. Một 'ifconfig lo up' nhanh chóng sắp xếp nó. – gav