在 CentOS 中配置 SQL Server 防火墙
一 准备与确认
- 确认系统使用的是 firewalld(CentOS 7/8 常用)。如未运行,请先启动并设置开机自启:
- 启动:sudo systemctl start firewalld
- 开机自启:sudo systemctl enable firewalld
- 确认 SQL Server 正在运行:sudo systemctl status mssql-server
- 默认情况下,SQL Server 数据库引擎使用 TCP 1433;若需要按实例名解析或动态端口,会用到 SQL Server Browser 的 UDP 1434。
二 使用 firewalld 放行端口
- 放行数据库引擎端口(必选):
- 命令:sudo firewall-cmd --permanent --zone=public --add-port=1433/tcp
- 需要按实例名连接或浏览器服务时放行(可选):
- 命令:sudo firewall-cmd --permanent --zone=public --add-port=1434/udp
- 使配置生效:sudo firewall-cmd --reload
- 验证端口是否已放行:
- 查看所有已放行端口:sudo firewall-cmd --list-ports
- 查看 1433/tcp 是否生效:sudo firewall-cmd --query-port=1433/tcp
- 查看 1434/udp 是否生效:sudo firewall-cmd --query-port=1434/udp。
三 多实例与动态端口的放行方式
- 若 SQL Server 配置为使用固定端口(推荐),直接放行该端口即可,例如固定为 1433/tcp,按第二节操作。
- 若使用动态端口,需放行 UDP 1434(SQL Browser)以便客户端解析实例端口;同时确保 SQL Server 允许远程连接(在 /var/opt/mssql/mssql.conf 中启用网络并设置端口,或启用 Browser 服务),并重启服务:sudo systemctl restart mssql-server。
四 连接测试与常见问题
- 本地连接测试(验证服务与认证是否正常):
- 命令:sqlcmd -S localhost -U SA -P ‘YourPassword’
- 远程连接测试(从另一台机器):
- 命令:sqlcmd -S <服务器IP或主机名>,1433 -U SA -P ‘YourPassword’
- 常见问题排查:
- 无法连接且提示被拒绝:检查 firewalld 是否运行、是否放行 1433/tcp,以及 SQL Server 是否允许远程连接。
- 提示“FirewallD is not running”:先启动 firewalld 再放行端口并重载。
- 按实例名连不上:确认已放行 UDP 1434 且 SQL Browser 已启用。