mysql java.net.ConnectException: Connection refused: connect
时间: 2025-01-06 15:43:23 浏览: 12
### Java MySQL `java.net.ConnectException: Connection refused` 解决方案
当遇到 `java.net.ConnectException: Connection refused` 错误时,这通常意味着客户端尝试连接到服务器失败,因为服务器端口未监听或防火墙阻止了请求。对于MySQL数据库而言,此错误表明应用程序无法成功建立与MySQL服务的网络连接。
#### 验证MySQL服务状态
确保MySQL服务正在运行是解决问题的第一步。可以通过以下命令来启动MySQL服务并验证其状态:
```bash
sudo systemctl start mysql
sudo systemctl status mysql
```
如果MySQL服务已经正常启动,则应继续排查其他潜在因素[^2]。
#### 检查配置文件中的主机名和端口号
确认应用代码以及任何中间件(如Sqoop)所使用的连接字符串是否指向正确的地址。默认情况下,MySQL监听本地回环接口上的3306端口。因此,建议检查程序中指定的目标IP地址是否为`localhost`或实际部署有MySQL实例的机器公网/私网IP,并且端口设置无误。
#### 排除防火墙干扰
有时操作系统自带的安全策略会阻挡外部访问特定的服务端口。可以临时关闭防火墙测试连通性,或者添加允许规则让目标端口通过过滤器:
```bash
# Ubuntu/Debian系列Linux发行版操作如下:
sudo ufw allow 3306/tcp
# 或者CentOS/RHEL类系统则执行:
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
```
#### 测试TCP/IP连接
利用简单的telnet工具快速检测能否顺利抵达MySQL监听位置:
```bash
telnet localhost 3306
```
若能进入交互界面说明物理层面上不存在障碍;反之则需进一步调查路由路径上是否存在阻碍。
#### 修改绑定地址
某些场景下,默认仅限于本机内部通信(`127.0.0.1`)可能是造成远程不可达的原因之一。编辑MySQL配置文件(/etc/mysql/my.cnf或其他),调整bind-address参数使其接受来自任意源发起的数据包(注意安全风险):
```ini
[mysqld]
...
bind-address = 0.0.0.0
```
完成上述更改后记得重启MySQL使新设定生效。
#### 用户权限管理
最后还需留意登录凭证的有效性和适用范围。创建具有适当授权的新账号或将现有账户授予足够的权限有助于消除因身份认证环节引发的问题:
```sql
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';
FLUSH PRIVILEGES;
```
以上措施综合运用可有效应对大多数由`Connection refused`引起的MySQL连接异常状况。
阅读全文