在云服务器上部署 Microsoft SQL Server(MSSQL)对于 Ubuntu 系统来说,是一个经典且实用的场景。虽然 MSSQL 传统上绑定 Windows 生态,但自 SQL Server 2017 起,微软正式推出了对 Linux 的原生支持,目前最新的 SQL Server 2022 也完美兼容主流 Linux 发行版,包括 Ubuntu。
以下是在阿里云、腾讯云等国内主流云厂商的 Ubuntu 云服务器(建议版本:Ubuntu 20.04 LTS 或 22.04 LTS)上安装和配置 SQL Server 的完整指南。
⚠️ 前置准备与注意事项
- 系统资源要求:
- SQL Server 是内存密集型应用。官方最低要求为 2GB RAM,但生产环境强烈建议 4GB 或以上。
- 如果使用的是低配云服务器(如 1核2G),务必确保系统有足够的 Swap 分区,否则启动时可能因 OOM(内存溢出)失败。
- 网络与安全组:
- SQL Server 默认监听 TCP 1433 端口。
- 重要:请在云厂商控制台的安全组/防火墙规则中,仅允许特定 IP 访问 1433 端口,切勿对
0.0.0.0/0开放,以防被勒索软件扫描攻击。
- 许可证:
- 开发者和测试用途可使用免费版的 Developer Edition。
- 生产环境需购买 Standard 或 Enterprise 许可证,或通过订阅制云服务获取授权。
📦 第一步:导入 Microsoft GPG 密钥和软件源
Ubuntu 官方仓库不包含 SQL Server,因此需要从微软官方源安装。以 Ubuntu 20.04 为例(其他版本类似):
# 1. 下载并导入 Microsoft GPG 公钥
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
# 2. 添加 SQL Server 2022 的软件源(根据你的需求选择版本)
# 这里以 SQL Server 2022 为例
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/ubuntu/20.04/mssql-server-2022 prod main" | sudo tee /etc/apt/sources.list.d/mssql-server.list
# 3. 更新包索引
sudo apt update
💡 提示:如果你需要 SQL Server 2019,请将 URL 中的
mssql-server-2022改为mssql-server-2019,并确保源路径匹配你的 Ubuntu 版本。
🛠️ 第二步:安装 SQL Server
sudo apt install -y mssql-server
安装过程中会自动处理依赖关系。完成后,运行配置脚本:
sudo /opt/mssql/bin/mssql-conf setup
🔑 配置向导关键步骤:
- 选择版本:
- 输入对应版本的编号(如
1表示 Developer Edition,免费用于开发和测试)。 - 生产环境请选择付费版本并输入有效许可证密钥。
- 输入对应版本的编号(如
- 设置 SA 密码:
- 必须满足复杂性要求:至少 8 个字符,包含大写、小写、数字和符号。
- ⚠️ 安全警告:
SA是超级管理员账户,请妥善保管密码,不要硬编码在代码中。
- 确认配置:
- 按
Y确认并接受许可条款。
- 按
✅ 第三步:验证安装状态
systemctl status mssql-server --no-pager
你应该看到服务状态为 active (running)。如果没有运行,尝试重启:
sudo systemctl restart mssql-server
🌐 第四步:配置防火墙与远程连接
1. 本地防火墙(UFW)
如果你的服务器启用了 UFW 防火墙,需放行 1433 端口:
sudo ufw allow 1433/tcp
sudo ufw reload
2. 云厂商安全组
登录你的云控制台(如阿里云 ECS、腾讯云 CVM),找到实例的安全组规则:
- 入方向规则:
- 协议:TCP
- 端口:1433
- 授权对象:强烈建议指定你的固定 IP 地址,而非
0.0.0.0/0。 - 描述:SQL Server Access
🧪 第五步:测试连接
方法一:使用 sqlcmd 命令行工具(推荐用于快速验证)
-
安装客户端工具:
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/ubuntu/20.04/prod main" | sudo tee /etc/apt/sources.list.d/msprod.list sudo apt update sudo apt install -y mssql-tools unixodbc-dev -
添加 bin 目录到 PATH(临时生效):
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc -
测试连接:
sqlcmd -S localhost -U SA -P '<YourStrong@Passw0rd>'将
<YourStrong@Passw0rd>替换为你设置的 SA 密码。如果成功,你将进入
1>提示符,输入SELECT @@VERSION;并按两次回车,即可看到 SQL Server 版本信息。
方法二:使用图形化工具(如 DBeaver、Azure Data Studio)
- 在你的本地电脑安装 Azure Data Studio(微软官方轻量级工具)或 DBeaver。
- 新建连接:
- 主机:云服务器的公网 IP
- 身份验证:SQL Server 身份验证
- 用户名:
SA - 密码:你设置的 SA 密码
- 点击“测试连接”,成功后保存。
🛡️ 第六步:安全加固最佳实践
- 禁用 SA 账户(可选):
如果团队使用 Windows Authentication 或专用应用账户,可考虑禁用 SA 账户以降低风险。ALTER LOGIN SA DISABLE; - 定期更新:
sudo apt update && sudo apt upgrade mssql-server - 备份策略:
SQL Server 数据库文件位于/var/opt/mssql/data/。建议使用bak文件进行逻辑备份,并结合云厂商的快照功能实现物理备份。 - 启用日志监控:
查看错误日志排查问题:sudo cat /var/opt/mssql/log/errorlog
❓ 常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 服务无法启动 | 内存不足 | 增加 Swap 或升级实例规格至 4GB+ RAM |
| 连接超时 | 安全组未放行 | 检查云控制台安全组是否开放 1433 端口 |
| 认证失败 | 密码不符合复杂度 | 重新运行 mssql-conf setup 或使用强密码重置 |
sqlcmd: not found |
未安装客户端或未配置 PATH | 执行上述安装 mssql-tools 的步骤 |
💡 总结
在 Ubuntu 云服务器上部署 SQL Server 已经完全成熟,适合需要跨平台能力、追求成本优化或已有 Linux 运维体系的企业。关键在于:
- 资源充足(≥4GB RAM)。
- 网络安全(严格限制 1433 端口访问)。
- 规范操作(使用强密码、定期更新)。
如需更高可用架构,可结合云厂商提供的 SQL Server 高可用托管服务(如 Azure SQL、阿里云 RDS for SQL Server),它们能自动处理主从同步、故障转移和备份,降低运维复杂度。
云技术博客