温馨提示×

如何在CentOS中配置SQL Server防火墙

小樊
31
2025-12-21 18:56:53
栏目: 云计算

在 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 1434SQL Browser 已启用。

0