CentOS服务器安装SQL Server的步骤是什么?

在 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/9Ubuntu 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 建议设为 permissivedisabled(否则需复杂策略配置)
防火墙 开放 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, ExpressProduction 版本需有效许可证
  • 设置 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?

欢迎继续提问 👇