MySQL 显然正在运行但未监听 TCP,jdbc 无法连接

MySQL 显然正在运行但未监听 TCP,jdbc 无法连接

我在 Ubuntu 上运行 MySQL。climysql也是如此http://localhost/phpmyadmin,但我无法使用以下命令进行连接java.sql.DriverManager.getConnection

java.net.SocketException: Network is unreachable (connect failed)

ps告诉我服务正在运行

/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

文件/etc/mysql/my.cnf包含/etc/mysql/mysql.conf.d/另一个文件my.cnf,该文件包含

[mysqld]
port = 3306

使用 cli,show variables like 'skip_networking'OFF

netstat -l | grep sql表示 UNIX 域套接字正在监听,但是 TCP 上没有任何用于 sql 的内容。

这就是为什么jdbc无法连接的原因吗?

我如何解决它?

答案1

检查netstat端口 3306 是否正在监听。

还请验证是否bind-address设置为以太网接口地址(或“*”)而不是本地主机地址(这是替代 skip-networking 的新默认值,很可能是问题的根源)。

如果根本没有这条线,那么应该用默认并有效,因此注释该行也是好的

在某些系统上,localhost并且127.0.0.1不同的含义:前者表示 UNIX 连接,后者表示 TCP 连接。我曾经遇到过这种情况,但已经不记得是在哪个系统上。

确保 Java 套接字连接连接到您的服务器地址。紧急情况下,尝试使用命令行 MySQL 连接到服务器使用--host参数强制建立 TCP 连接。

最后,为了确保万无一失,iptables -L -n应该告诉您该连接是否可能受到防火墙保护。

相关内容