在Linux环境下部署SQLServer数据库

举报
tea_year 发表于 2025/04/18 16:56:11 2025/04/18
【摘要】 近年来,随着跨平台技术的快速发展,微软SQL Server对Linux生态的官方支持标志着数据库领域的重要变革。在Linux环境下部署SQL Server,不仅是企业实现异构系统整合、降低运维成本的关键路径,也对技术团队提出了兼容性适配、性能调优及安全管控等新挑战。本文将围绕Linux部署SQL Server的核心技术场景,分析从环境准备、服务配置到高可用架构设计的全流程要点,探讨如何在开源...

近年来,随着跨平台技术的快速发展,微软SQL Server对Linux生态的官方支持标志着数据库领域的重要变革。在Linux环境下部署SQL Server,不仅是企业实现异构系统整合、降低运维成本的关键路径,也对技术团队提出了兼容性适配、性能调优及安全管控等新挑战。

本文将围绕Linux部署SQL Server的核心技术场景,分析从环境准备、服务配置到高可用架构设计的全流程要点,探讨如何在开源操作系统上充分发挥SQL Server的事务处理与数据分析能力,同时规避版本依赖、资源分配等潜在风险。通过系统性总结,旨在为运维人员及开发者提供可复用的部署策略,助力企业高效构建稳定、安全的跨平台数据库服务。

然后接下来的内容,我会结合我个人实际安装过程中碰到的问题,将每一步都写明。

 1.1 下载阿里云在线yum源到本地

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

1.2 下载微软官方的sqlserver源到本地

wget -O /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo

1.3 安装mssql-server(SQL Server软件包)

yum install -y mssql-server

接下来就是要指定安装哪一个版本了,但是如果机器空闲内存低于2G的话,请继续按照以下步骤,否则,直接进行第三部分

 

破解内存限制

2.1 首先切换到 /opt/mssql/bin 目录下

cd /opt/mssql/bin/

2.2 然后保存备份文件

mv sqlservr sqlservr.old

2.3 使用python修改二进制文件,把里面的2G内存限制改为512M

oldfile = open("sqlservr.old", "rb").read()

newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e")

open("sqlservr", "wb").write(newfile)

exit()

 

3.1 选择想要安装的sql server版本,以及设置SA用户密码

/opt/mssql/bin/mssql-conf setup

 

 输入数字,选择所要安装的版本,然后在出现询问是否接受许可条款时,输入yes,回车继续下一步。

 

 到了这一步的时候,输入SA用户密码(密码长度八位以上,且密码必须包含数字、字母和特殊字符),注意在输入密码的时候,窗口上是不显示任何字符的,所以输入完之后,直接回车,然后再输入一遍,回车确认。

3.2 运行命令,检查SQL server状态(运行是否有问题)

systemctl status mssql-server

如果出现了如下图这种错误:

 

 在启动SQL server引擎的时候出现了错误。

关于这个的解决方案就是,我们需要设置一下 /opt/mssql/bin/sqlservr 目录的权限,让SQL server可以访问

cd /opt/mssql/bin/

chmod 777 sqlservr

这次权限分配完成,接着重新输入命令,再次安装

/opt/mssql/bin/mssql-conf setup

安装完成之后,再次检查SQL server的状态

systemctl status mssql-server

出现如下图界面,则表示已安装成功

 

 3.1 设置防火墙,开启远程连接

firewall-cmd --zone=public --add-port=1433/tcp --permanent

firewall-cmd --reload

如果执行上述命令的时候,出现这种错误

 

 则表示防火墙未开启,这种情况可以跳过防火墙设置,直接进行下一步

安装sqlserver命令行工具

4.1 下载微软官方的软件包yum源

wget -O /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo

4.2 如果以前装过mssql,则需要删除较旧的UnixODBC软件包

yum remove unixODBC-utf16 unixODBC-utf16-devel

4.3 安装mssql工具包和UnixODBC开发人员软件包(这一步命令会出现两次询问:是否接受许可条款,都输入yes,回车确定)

yum install -y mssql-tools unixODBC-devel

4.4 添加PATH环境变量

echo "export PATH=$PATH:/opt/mssql-tools/bin" >> /etc/profile

source /etc/profile

4.5 使用sqlcmd命令连接本地的sqlserver,输入之前设置的SA密码

sqlcmd -S localhost -U SA -p

 

 出现这个界面,表示登录成功,然后我们可以开始写SQL命令。

首先我们先执行一句SQL语句,创建一个测试数据库,检测是否有效。

CREATE DATABASE [Test]

GO

 

SELECT [Name] FROM SYS.DATABASES

GO

 

 5.1 打开本地windows端的SSMS,远程连接CentOS中的SQL Server

 

 

总结

在Linux环境下部署SQL Server需重点关注以下技术要点:
1. 环境适配性‌:仅支持RHEL、Ubuntu、SLES等主流发行版,需验证内核版本及资源(内存≥2GB,建议SSD存储)。
2. 核心组件依赖‌:通过官方仓库安装mssql-server主服务及工具链(如mssql-tools),依赖OpenSSL和LibXML2等基础库。
3. 安全配置‌:强制启用强SA密码,推荐启用TLS 1.2+加密通信,限制远程IP访问并配置防火墙规则(默认端口1433)。
4. 性能与高可用‌:生产环境需通过mssql-conf优化内存/CPU分配,结合Pacemaker或Kubernetes实现集群高可用。
5. 维护管理‌:启用自动日志轮转和定期备份任务,利用systemd监控服务状态,定期通过yum/apt更新安全补丁。
6. 容器化部署‌:官方Docker镜像支持快速部署,需挂载持久化卷并配置环境变量(如ACCEPT_EULA=Y)。
注意‌:开发者版免费但禁用于生产;需提前规划存储I/O及灾难恢复方案,避免单点故障风险

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。