Ubuntu 上管理 SQL Server 的实用指南
一 环境准备与安装
- 支持的系统与版本:Ubuntu 18.04/20.04/22.04;对应可安装的 SQL Server 2017/2019/2022,以及 SQL Server 2025(Preview,仅 Ubuntu 22.04)。最低内存要求 2 GB。注意:WSL 不支持作为安装目标。
- 安装步骤(以 Ubuntu 20.04 + SQL Server 2022 为例):
- 导入 GPG 密钥
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
- 添加软件源(按你的 Ubuntu 版本选择相应列表)
sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)”
- 安装服务器包
sudo apt-get update && sudo apt-get install -y mssql-server
- 初始化配置(设置 SA 密码并选择版本)
sudo /opt/mssql/bin/mssql-conf setup
- 验证服务状态
systemctl status mssql-server --no-pager
- 远程访问需开放防火墙端口 1433/tcp(见下文)
说明:免费许可的版本包括 Evaluation、Developer、Express。
二 日常运维与服务管理
- 服务生命周期
- 启动:sudo systemctl start mssql-server
- 停止:sudo systemctl stop mssql-server
- 重启:sudo systemctl restart mssql-server
- 开机自启:sudo systemctl enable mssql-server
- 状态检查:systemctl status mssql-server --no-pager
- 远程连接与防火墙
- Ubuntu 常用防火墙 ufw:sudo ufw allow 1433/tcp;如使用 firewalld:sudo firewall-cmd --add-port=1433/tcp --permanent && sudo firewall-cmd --reload
- SQL Server 代理(作业调度)
- 启用:sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
- 使配置生效:sudo systemctl restart mssql-server
- 配置文件与关键目录
- 主配置:/var/opt/mssql/mssql.conf(由 mssql-conf 管理)
- 默认数据目录:/var/opt/mssql/data(迁移或扩容时常用)
三 安全与账户管理
- SA 密码策略与修改
- 密码需至少 8 个字符,且包含大小写字母、数字、符号中至少 3 类;最长 128 个字符。
- 修改 SA 密码:sudo /opt/mssql/bin/mssql-conf set-sa-password
- 安全最佳实践
- 首次连接后建议:创建新的登录名并加入 sysadmin 服务器角色,随后禁用 sa 账户(生产环境尤应如此)。
四 备份恢复与常用操作
- 命令行工具安装(sqlcmd、bcp)
- Ubuntu 22.04/20.04/18.04:
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update && sudo apt-get install -y mssql-tools18 unixodbc-dev
echo ‘export PATH=“$PATH:/opt/mssql-tools18/bin”’ >> ~/.bashrc && source ~/.bashrc
- 本地连接测试
- sqlcmd -S localhost -U SA -P ‘YourStrong@Password’
- 备份与还原示例
- 备份到文件:
sqlcmd -S localhost -U SA -P ‘YourStrong@Password’ -Q “BACKUP DATABASE [TestDB] TO DISK = ‘/var/opt/mssql/backup/TestDB.bak’ WITH INIT, COMPRESSION”
- 从备份还原(示例将备份文件放在 /var/opt/mssql/backup):
sqlcmd -S localhost -U SA -P ‘YourStrong@Password’
1> RESTORE DATABASE [TestDB]
2> FROM DISK = ‘/var/opt/mssql/backup/TestDB.bak’
3> WITH MOVE ‘TestDB_Data’ TO ‘/var/opt/mssql/data/TestDB_Data.mdf’,
4> MOVE ‘TestDB_Log’ TO ‘/var/opt/mssql/data/TestDB_Log.ldf’
5> GO
- 迁移与扩容(更改默认数据/日志目录)
- 准备目录并授权:
sudo mkdir -p /data/mssql/{data,log}
sudo chown mssql:mssql /data/mssql/{data,log}
- 通过 mssql-conf 调整默认目录并重启:
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /data/mssql/data
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /data/mssql/log
sudo systemctl restart mssql-server
五 更新升级与常见问题
- 更新升级
- 直接通过 APT 升级引擎包:sudo apt-get update && sudo apt-get install -y mssql-server(会获取仓库中的最新可用版本)
- 常见问题与排障
- 服务未启动或端口不通:检查 systemctl 状态、日志与防火墙规则(确保 1433/tcp 已放行)。
- 客户端连接失败:确认监听端口、SA 密码策略与网络连通性;必要时用 sqlcmd 本地验证后再远程连接。
- 工具链不匹配:确保安装与系统匹配的 mssql-tools18,并将 /opt/mssql-tools18/bin 加入 PATH。
- 预览版提示:如需体验 SQL Server 2025(Preview),仅 Ubuntu 22.04 支持,且为预览版,不建议用于生产。