在 CentOS 上部署 SQL Server 的完整步骤
一 环境准备
- 建议使用 CentOS 7 或 CentOS 8(x86_64),并确保系统可访问公网以安装官方仓库包。
- 资源最低要求:2 GB 内存、6 GB 磁盘空间,并启用 64 位内核。
- 以具有 sudo 权限的用户操作,提前更新系统并安装基础工具(如 wget)。
二 安装与配置 SQL Server
- 添加 Microsoft 官方仓库并安装服务器包(以下以 SQL Server 2019 为例,适用于 CentOS 7/8;注意将仓库路径中的 7/8 与系统版本保持一致):
- 添加仓库
- CentOS 7:sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
- CentOS 8:sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
- 安装服务器
- sudo yum install -y mssql-server
- 初始化配置(设置 SA 密码并选择版本,开发测试可选 Developer)
- sudo /opt/mssql/bin/mssql-conf setup
- 启动并设为开机自启
- sudo systemctl start mssql-server
- sudo systemctl enable mssql-server
- sudo systemctl status mssql-server(确认状态为 active (running))
三 安装命令行工具与连接验证
- 安装命令行工具 sqlcmd/bcp 与依赖:
- 添加工具仓库
- CentOS 7:sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
- CentOS 8:sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
- 安装工具(如已装旧版 unixODBC-utf16 相关包,建议先移除以避免冲突)
- sudo yum remove -y unixODBC-utf16 unixODBC-utf16-devel
- sudo yum install -y mssql-tools unixODBC-devel
- 配置环境变量(便于直接使用 sqlcmd)
- 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 ‘YourStrongPassword’
- 在 1> 提示符执行:SELECT @@VERSION; GO(应返回 SQL Server 版本信息)
四 防火墙与远程连接
- 开放默认端口 TCP 1433(FirewallD):
- sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
- sudo firewall-cmd --reload
- 云服务器需同时在 安全组 放行 1433/TCP。
- 远程连接示例(SSMS/Navicat):
- 主机:服务器 IP
- 端口:1433
- 身份验证:SQL Server 身份验证
- 登录:SA / 自定义强密码
五 常见问题与优化
- 内存限制提示:SQL Server on Linux 默认有 2 GB 内存上限(开发环境可用),生产环境建议 ≥4 GB。不建议通过修改二进制绕过限制,可通过增加内存或调整实例配置优化性能。
- 连接失败排查要点:
- 服务状态:systemctl status mssql-server
- 端口监听:ss -lntp | grep 1433
- 防火墙/安全组:已放行 1433/TCP
- 监听地址:/opt/mssql/bin/mssql-conf get network.ipaddress(如需监听所有地址可设置为 0.0.0.0)
- 密码与安全:SA 密码需符合复杂度要求(至少 8 个字符,包含大小写字母、数字与符号);生产环境建议禁用 SA,创建域/本地登录并采用最小权限原则。