通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败。错误:“connect timed out解决...

本文介绍了解决Java通过JDBC连接SQLServer2008时遇到的连接失败问题的具体步骤,包括调整SQLServer配置、开启端口及关闭防火墙等操作。

环境:SQLServer 2008 R2 + MyEclipse 6.5 + JDK 1.6.24

问题:

Java通过JDBC连接SQLServer 2008,出现如下问题:通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败。错误:“connect timed out。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接。

解决:


1. 打开SQLServer 配置管理器------->SQLServer for MSQLSERVER------->TCP/IP------->如果没有启动,则启动------->右键属性------->IPAddresses------->IP All------->将TCP端口改为1433;




2. 打开SQLServer 配置管理器------->SQL Native Client 10.0 Configuration------->CP/IP------->如果没有启动,则启动------->右键属性------->将Default Port(默认端口)改为1433;




3. 控制面板------->系统和安全------->Windows FireWall(Windows 防火墙)------->TurnWindows FireWall on or off------->将Windows防火墙关闭。




4. 完美解决。

参考资料:

http://blog.youkuaiyun.com/zjentrance/article/details/6652255

http://www.cnblogs.com/haijun-joy/archive/2012/05/12/2497384.html

### Java 数据库连接失败 `java.net.ConnectException: Connection timed out` 的解决方案 在 Java 应用程序中,当尝试连接数据库时出现 `java.net.ConnectException: Connection timed out` 错误,通常表明客户端无法与目标数据库服务器建立网络连接。以下是可能的原因及对应的解决方案: #### 1. **检查数据库服务是否启动** 确保目标数据库服务已正常启动并监听指定的端口。例如,在 MySQL 中可以通过以下命令检查服务状态: ```bash systemctl status mysql ``` 如果服务未启动,可以使用以下命令启动服务: ```bash systemctl start mysql ``` #### 2. **验证网络连通性** 使用 `ping` 或 `telnet` 命令测试从 Java 客户端到数据库服务器的网络连通性。如果 `ping` 不通或 `telnet` 测试失败,则需要排查防火墙规则、路由配置或 IP 地址设置问题[^3]。 - 使用 `ping` 测试主机连通性: ```bash ping <数据库服务器IP> ``` - 使用 `telnet` 测试端口连通性(例如 MySQL 默认端口为 3306): ```bash telnet <数据库服务器IP> 3306 ``` #### 3. **检查防火墙规则** 防火墙可能会阻止外部访问数据库端口。确保防火墙允许来自客户端的连接请求。例如,在 CentOS 系统中可以添加规则以开放 MySQL 端口: ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload ``` #### 4. **确认数据库绑定地址** 某些数据库默认仅绑定到本地回环地址(`127.0.0.1`),这会导致外部客户端无法访问。需要修改数据库配置文件以允许外部连接。例如,在 MySQL 中编辑 `my.cnf` 文件: ```ini bind-address = 0.0.0.0 ``` 修改后重启数据库服务以使更改生效。 #### 5. **检查 JDBC URL 配置** 确保 JDBC URL 中的主机名、端口数据库名称正确无误。例如,MySQL 的标准 JDBC URL 格式如下: ```java String url = "jdbc:mysql://<数据库服务器IP>:3306/<数据库名称>?useSSL=false&serverTimezone=UTC"; ``` #### 6. **增加连接超时时间** 如果网络延迟较高,可以尝试增加 JDBC 连接的超时时间。通过在 JDBC URL 中添加 `connectTimeout` 参数实现: ```java String url = "jdbc:mysql://<数据库服务器IP>:3306/<数据库名称>?useSSL=false&serverTimezone=UTC&connectTimeout=10000"; ``` 上述示例将超时时间设置为 10 秒。 #### 7. **验证数据库用户权限** 确保用于连接数据库的用户具有从客户端 IP 地址访问数据库的权限。例如,在 MySQL 中可以通过以下命令授予权限: ```sql GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码'; FLUSH PRIVILEGES; ``` #### 8. **日志分析** 查看数据库和应用程序的日志文件,定位具体的错误原因。例如,在 Druid 数据源中可以通过日志记录捕获连接异常信息[^1]。 ```python # 示例:Druid 数据源配置 dataSource.setUrl("jdbc:mysql://<数据库服务器IP>:3306/<数据库名称>?useSSL=false&serverTimezone=UTC"); dataSource.setUsername("用户名"); dataSource.setPassword("密码"); ``` --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值