在 CentOS 服务器上安装 Microsoft SQL Server(Linux 版)是可行的,但需注意以下关键前提和步骤。Microsoft 官方仅支持 RHEL、SUSE 和 Ubuntu,自 SQL Server 2019 起已 正式停止对 CentOS 的官方支持(因 CentOS 8 停止维护及 CentOS Stream 转向滚动发布模式)。不过,SQL Server 2019 及 2022 在技术上仍可在 CentOS 7/8(非 Stream)上安装运行(属社区验证方案,无官方支持);而 CentOS Stream 不被推荐且可能不稳定。
✅ 强烈建议替代方案:
→ 迁移至 RHEL 8/9 或 Ubuntu 20.04/22.04(官方长期支持)
→ 或使用 Docker 容器方式(官方镜像 mcr.microsoft.com/mssql/server 兼容性更好)
⚠️ 前提条件(以 CentOS 7 为例,仅作技术参考)
| 项目 | 要求 |
|---|---|
| 操作系统 | CentOS 7.6–7.9(x86_64) ❌ CentOS 8+(含 Stream)不被官方支持,存在兼容性风险 |
| 内存 | ≥ 2 GB(建议 ≥ 4 GB) |
| 磁盘空间 | ≥ 6 GB(系统 + 数据库文件) |
| SELinux | 建议设为 permissive 或 disabled(否则需复杂策略配置) |
| 防火墙 | 开放 TCP 1433 端口(或自定义端口) |
| Python | CentOS 7 自带 Python 2.7,无需额外安装(SQL Server 安装脚本兼容) |
✅ 安装步骤(CentOS 7,SQL Server 2019)
1️⃣ 配置 Microsoft YUM 仓库
# 下载并安装 Microsoft GPG 密钥
curl -o /tmp/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
sudo cp /tmp/mssql-server.repo /etc/yum.repos.d/
# 同时添加 SQL Server CLI 工具(sqlcmd, bcp)仓库(可选但推荐)
curl -o /tmp/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
sudo cp /tmp/msprod.repo /etc/yum.repos.d/
💡 注意:这里复用 RHEL 7 仓库(因 CentOS 7 二进制兼容 RHEL 7),这是社区通用做法。
2️⃣ 安装 SQL Server
sudo yum clean all
sudo yum makecache
sudo yum install -y mssql-server
3️⃣ 运行配置向导(设置 SA 密码、选择版本)
sudo /opt/mssql/bin/mssql-conf setup
按提示操作:
- 选择版本(如
Evaluation,Developer,Express— Production 版本需有效许可证) - 设置
sa用户密码(⚠️ 必须满足强密码策略:8位以上,含大小写字母+数字+特殊字符) - 等待服务初始化完成
✅ 成功后提示:SQL Server is now ready for use!
4️⃣ 启动并启用开机自启
sudo systemctl start mssql-server
sudo systemctl enable mssql-server
sudo systemctl status mssql-server # 检查状态(应为 active (running))
5️⃣ 配置防火墙(开放 1433 端口)
sudo firewall-cmd --permanent --add-port=1433/tcp
sudo firewall-cmd --reload
6️⃣ (可选)安装 SQL Server 命令行工具(sqlcmd / bcp)
sudo yum install -y mssql-tools unixODBC-devel
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
7️⃣ 验证连接(本地测试)
sqlcmd -S localhost -U SA -P '<YourStrong@Passw0rd>'
进入后执行:
SELECT @@VERSION;
GO
应返回 SQL Server 版本信息。
🔧 常见问题与修复
| 问题 | 解决方案 |
|---|---|
Failed to initialize system database |
检查磁盘空间、SELinux(临时禁用:sudo setenforce 0)、/var/opt/mssql 权限(属主应为 mssql:mssql) |
Password validation failed |
SA 密码必须含大写+小写+数字+符号,长度≥8;避免常见词(如 Password123!) |
Connection refused |
检查 systemctl status mssql-server;确认 firewalld 已放行 1433;检查 netstat -tlnp | grep 1433 |
ODBC Driver not found |
安装 unixODBC 和驱动:sudo yum install -y unixODBC unixODBC-devel |
🚫 重要警告(再次强调)
- ❌ CentOS 8/Stream 不受支持:SQL Server 2022 官方明确要求 RHEL 8.4+ / Ubuntu 20.04+,不再适配 CentOS 8+。
- ❌ 生产环境禁用:微软不提供 CentOS 上的补丁、安全更新或技术支持;违反 SLA。
- ✅ 合规推荐路径:
- ✅ 使用 RHEL + SQL Server 订阅(含官方支持)
- ✅ 使用 Azure SQL Managed Instance / Azure SQL Database(全托管)
- ✅ 使用 Docker 容器(
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=...' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest)
需要我为你生成:
- ✅ RHEL 8/9 的完整安装脚本?
- ✅ Docker 方式一键部署(含持久化卷配置)?
- ✅ 连接远程客户端(Windows SSMS / DBeaver)的配置指南?
- ✅ 自动化 Ansible Playbook?
欢迎继续提问 👇
PHPWP博客