温馨提示×

SQL Server在CentOS中如何配置网络

小樊
43
2025-12-21 18:53:01
栏目: 云计算

在 CentOS 上配置 SQL Server 网络的实用步骤

一 前置检查与准备

  • 确认系统为 CentOS 7/8,已安装并初始化 SQL Server(mssql-server),且安装了命令行工具 mssql-tools(含 sqlcmd)。
  • 建议将 sqlcmd 加入 PATH,便于后续测试:
    echo ‘export PATH=$PATH:/opt/mssql-tools/bin’ >> ~/.bashrc && source ~/.bashrc
  • 本地连通性自检(失败通常与防火墙或服务未监听有关):
    sqlcmd -S localhost -U SA -P ‘<YourStrong!Passw0rd>’
    若 localhost 超时,可改用 127.0.0.1 测试:
    sqlcmd -S 127.0.0.1 -U SA -P ‘<YourStrong!Passw0rd>’
  • 确保 SQL Server 服务处于运行状态:
    sudo systemctl status mssql-server(未运行则执行:sudo systemctl start mssql-server)
    以上准备与自检步骤可快速定位是否为网络/服务未就绪导致的问题。

二 防火墙放行 SQL Server 端口

  • 放行数据库引擎默认端口 TCP 1433(永久生效并重载规则):
    sudo firewall-cmd --permanent --zone=public --add-port=1433/tcp
    sudo firewall-cmd --reload
  • 如需使用命名实例或 UDP 探测,放行 TCP/UDP 1434(SQL Server Browser):
    sudo firewall-cmd --permanent --zone=public --add-port=1434/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=1434/udp
    sudo firewall-cmd --reload
  • 验证端口是否已放行:
    firewall-cmd --zone=public --list-ports
    以上为最常见的放行方式;若仅使用默认实例并固定端口 1433,放行 1433/tcp 即可。

三 配置 SQL Server 监听与端口

  • 方式 A(推荐,Linux 原生配置):编辑配置文件 /var/opt/mssql/mssql.conf
    1. 启用 TCP/IP 并固定端口:
      sudo tee /var/opt/mssql/mssql.conf >/dev/null <<‘EOF’ [network] tcpip = true [tcpip] port = 1433 EOF
    2. 可选:启用 SQL Browser(多实例/命名实例场景):
      sudo tee -a /var/opt/mssql/mssql.conf >/dev/null <<‘EOF’ [browser] enable = true EOF
    3. 重启服务使配置生效:
      sudo systemctl restart mssql-server
  • 方式 B(仅当系统存在 SQL Server 配置管理器时):
    在“SQL Server Network Configuration → [实例名] 的协议”中启用 TCP/IP,并将“TCP 端口”设为 1433;随后在 SSMS/T-SQL 中固定端口:
    exec sp_configure ‘tcp dynamic ports’, ‘’;
    exec sp_configure ‘tcp port’, 1433;
    RECONFIGURE;
    方式 A 适用于 Linux 上的 SQL Server,简洁可靠;方式 B 适用于同时存在 Windows 管理工具的环境。

四 验证与远程连接

  • 本机验证(确认监听与认证正常):
    sqlcmd -S 127.0.0.1 -U SA -P ‘<YourStrong!Passw0rd>’
  • 远程验证(从另一台主机):
    sqlcmd -S <服务器IP或主机名>,1433 -U SA -P ‘<YourStrong!Passw0rd>’
  • 若远程不通,按序排查:
    1. 服务器防火墙已放行 1433/tcp(见第二节);
    2. SQL Server 正在监听 1433:ss -lntp | grep 1433;
    3. 云服务器安全组/ACL 已放行入站 1433/tcp
    4. 客户端网络可达(ping/路由/traceroute),并确认未被中间设备拦截。
      以上验证路径覆盖了最常见的连接失败原因与定位顺序。

五 常见问题与处理

  • SELinux 拦截:临时测试可 setenforce 0;生产环境应配置 SELinux 布尔值或策略允许 SQL Server 网络访问,而非长期关闭。
  • 监听地址限制:若需对外网开放,确保 /var/opt/mssql/mssql.conf 中未将监听限制为 127.0.0.1;使用 ss -lntp | grep 1433 检查实际监听地址。
  • 命名实例与端口:单实例固定 1433/tcp 最简洁;多实例建议启用 SQL Browser(UDP 1434) 或为每个实例配置固定端口并在客户端显式指定。
  • 客户端解析问题:优先使用 IP 直连排除 DNS 问题;必要时在客户端 hosts 中做名称解析。
    以上做法可显著提升远程访问成功率并降低维护复杂度。

0