通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。

本文解决了一个关于SQL Server无法通过TCP/IP端口1433建立连接的问题。主要步骤包括:更改TCP/IP状态为启动,设置端口号为1433,并重启SQL Server服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天碰到一个问题,查了很久,报错如下:

通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性。确保 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接。

连接配置信息:

jdbc.driverclass=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.jdbcurl=jdbc:sqlserver://localhost:1433;DatabaseName=my_database
jdbc.username=sa

jdbc.password=root


详细报错信息:

com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性。确保 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接。”。

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:242)
at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2369)
at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:551)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1963)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
at java.sql.DriverManager.getConnection(DriverManager.java:664)

at java.sql.DriverManager.getConnection(DriverManager.java:247)


解决办法:

打开SQL Server  配置管理器




第一步:



TCP/IP更改为:启动状态


第二步:

选中的TCP/IP,右键 -> 属性 ,拉到最底部



TCP端口里面写上:1433



第三步:

选中下图的SQL Server服务,右键重新启动


OK,没用你找我



### 解决方案分析 当遇到 `curl` 命令返回 `(7) Failed connect to localhost:10248; 拒绝连接` 的错误时,这通常表明目标服务未运行或监听指定端口。以下是可能的原因及其解决方案: #### 1. **Kubelet健康检查端口未启用** Kubernetes 中的 Kubelet 默认会暴露一个本地健康检查接口 `/healthz`,但该功能需要显式配置才能正常工作。如果 Kubelet 配置文件中缺少相关参数,则可能导致此问题[^1]。 #### 修改方法 编辑 Kubelet 启动参数,确保包含以下选项: ```bash --address=127.0.0.1 --port=10248 --read-only-port=10249 --authentication-anonymous=true ``` 如果使用 systemd 管理 Kubelet,可以编辑其服务文件并重启服务: ```bash sudo systemctl edit kubelet ``` 添加环境变量: ```ini [Service] Environment="KUBELET_EXTRA_ARGS=--address=127.0.0.1 --port=10248 --read-only-port=10249" ``` 接着重启 Kubelet: ```bash sudo systemctl daemon-reload && sudo systemctl restart kubelet ``` #### 2. **防火墙阻止访问** 如果服务器启用了防火墙规则,可能会阻止单独对特定端口(如 10248)的访问。可以通过临时禁用防火墙来验证这一点: ```bash sudo ufw disable || sudo iptables -F ``` 或者允许特定端口通过防火墙: ```bash sudo ufw allow 10248/tcp ``` #### 3. **Docker 和 Kubelet cgroup 驱动不一致** 当 Docker 使用的 cgroup 驱动与 Kubelet 不匹配时,可能导致组件间通信异常,从而影响健康检查等功能[^4]。确认两者使用的驱动是否相同: - 查看 Docker 驱动: ```bash docker info | grep -i cgroup ``` - 查看 Kubelet 驱动: ```bash ps aux | grep kubelet | grep cgroup ``` 若发现差异,需统一两者的设置。例如,在 Docker 配置文件中修改驱动为 `systemd`: ```bash vi /lib/systemd/system/docker.service ``` 找到 `[Service]` 节点下的 `ExecStart` 行,并追加参数: ```ini ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd ``` 更新配置后重新加载并启动 Docker: ```bash sudo systemctl daemon-reload && sudo systemctl restart docker ``` #### 4. **API Server 连接问题** 错误信息还提到无法连接至 API Server (`localhost:8080`) 或其他节点上的地址(`192.168.0.102:6443`)。这是由于客户端尝试默认连接到旧版无认证的端口所致[^2]。建议始终提供完整的上下文信息给 kubectl 工具: ```bash export KUBECONFIG=~/.kube/config kubectl get pods --all-namespaces ``` 此外,可通过调试模式进一步排查网络连通性: ```bash curl -k https://<master-ip>:6443/healthz ``` --- ### 总结代码片段 ```bash # 修改 Kubelet 参数 sudo systemctl edit kubelet cat <<EOF > /etc/systemd/system/kubelet.service.d/10-kubeadm.conf [Service] Environment="KUBELET_EXTRA_ARGS=--address=127.0.0.1 --port=10248 --read-only-port=10249" EOF sudo systemctl daemon-reload && sudo systemctl restart kubelet # 统一 Docker 和 Kubelet cgroup 驱动 vi /lib/systemd/system/docker.service sed -i 's/--exec-opt native\.cgroupdriver=cgroupfs/--exec-opt native.cgroupdriver=systemd/g' /lib/systemd/system/docker.service sudo systemctl daemon-reload && sudo systemctl restart docker # 测试健康状态 curl -sSL http://localhost:10248/healthz ``` --- ###
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学编程的司马光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值