Ubuntu 上 SQL Server 网络配置实操指南
一 环境准备与基础检查
- 确认系统版本与网络工具:lsb_release -a、ip a、ping 网关IP、ss -lntp | grep 1433。
- 安装 SQL Server(如尚未安装):导入 GPG 密钥与仓库后执行 sudo apt-get update && sudo apt-get install -y mssql-server,运行 sudo /opt/mssql/bin/mssql-conf setup 设置 SA 密码与版本,最后 sudo systemctl start mssql-server && sudo systemctl enable mssql-server。
- 安装命令行工具便于本地验证:sudo apt-get install -y mssql-tools unixodbc-dev,并将 /opt/mssql-tools/bin 加入 PATH,便于使用 sqlcmd 连接测试。
二 配置 SQL Server 监听与端口
- 启用 TCP/IP 并固定端口为 1433:
sudo /opt/mssql/bin/mssql-conf set network.tcpip-enable true
sudo /opt/mssql/bin/mssql-conf set network.tcpip-port 1433
sudo systemctl restart mssql-server
- 本地连通性自检:
sqlcmd -S localhost,1433 -U SA -P ‘<你的SA密码>’ -Q “SELECT 1”
ss -lntp | grep 1433 应能看到 sqlservr 监听在 0.0.0.0:1433 或 :::1433。
三 配置 Ubuntu 主机网络与防火墙
- 静态 IP(Netplan,适用于 Ubuntu 18.04/20.04/22.04 等使用 netplan 的版本):
- 查看配置:ls /etc/netplan/*.yaml(如 00-installer-config.yaml)。
- 编辑示例(按需替换 addresses、gateway4/gateway6、nameservers):
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers: { addresses: [8.8.8.8, 1.1.1.1] }
- 应用:sudo netplan apply(远程环境建议先准备控制台,避免断连)。
- 防火墙放行 SQL Server 端口:
sudo ufw allow 1433/tcp
sudo ufw status(确认规则生效)。
四 远程连接与安全加固
- 从客户端连接:在 SSMS 或 sqlcmd 中使用 “服务器名/IP,1433”,身份验证选择 SQL Server 身份验证,使用 SA 或自建登录名。
- 创建示例登录与授权(在 sqlcmd 中执行):
CREATE LOGIN [dbadmin] WITH PASSWORD = ‘StrongP@ssw0rd!’;
ALTER SERVER ROLE [sysadmin] ADD MEMBER [dbadmin];
– 或仅授予某库权限:
USE [YourDB]; CREATE USER [dbadmin] FOR LOGIN [dbadmin];
EXEC sp_addrolemember ‘db_datareader’, ‘dbadmin’;
EXEC sp_addrolemember ‘db_datawriter’, ‘dbadmin’;
- 安全建议:
- 避免使用 SA,创建最小权限的专用登录;
- 将端口改为非默认并限制来源 IP;
- 启用 TLS 加密(生产环境强烈建议)。
五 常见问题排查清单
- 服务未监听或被占用:systemctl status mssql-server;ss -lntp | grep 1433;必要时 lsof -iTCP:1433 -sTCP:LISTEN。
- 端口未放行:sudo ufw status;云主机还需检查安全组/NACL 是否允许入站 1433/tcp。
- 监听地址受限:确认已设置 network.tcpip-enable 与 network.tcpip-port 并重启服务。
- 客户端连通性:
- 本机:sqlcmd -S localhost,1433 -U SA
- 远程:sqlcmd -S <服务器IP>,1433 -U <登录名>
- 端口探测:nc -vz <服务器IP> 1433 或 telnet <服务器IP> 1433
- 日志定位:/var/opt/mssql/log/errorlog 可快速发现绑定失败、认证错误等根因。