Linux 版本 SQL Server 的快速安装

2019-12-26 12:14:12 浏览数 (1)

SQL Server 2017 版本已经支持 Linux 安装了,出来了很长时间,我还没有实现过在 Linux 上面的应用,包括安装和高可用配置。本文就先尝试完成 Linux 版 SQL Server 的安装。

经常在 Windows 下安装 SQL Server 失败的同学们有福了,因为按照下面的步骤,不超过 15 分钟,你就可以直接体验 SQL 开发之旅!

SQL Server 在 CentOS 上的安装

步骤:

  1. 安装镜像
  2. 执行配置文件
  3. 增加防火墙对 SQL Server 指定端口的支持
  4. 安装管理工具

注意点:

1 安装库的配置:

安装镜像的时候,正确处理依赖软件包:选用的 Linux 版本是 Centos 7, 微软的官方文档中并没有给出针对 Centos 7 的安装指南,但 Centos 是基于 RedHat 衍生出来的版本,因此尝试使用 RedHat 的安装方法,应该也奏效。

固然可以离线安装 SQL Server, 只要对 SQL Server On Linux 的包依赖都自信能搞定。为了方便起见,我在这里还是坚持用了配置 Repository 的方式,让微软搞定这些依赖关系。不得不说,有资本的微软在保障安装流畅方面做到了极致,即使我在使用 Python 这么流行的语言框架搭建上面,也没有得到过如此丝滑的在线安装体验。

这里不得不提一下对 YUM 的配置了。YUM 管理的就是包依赖,其实质是对软件的依赖做本地缓存,方便安装的时候,能自动化处理包依赖关系。

配置 Installation Online Repository:

微软已经为我们配置好了 repo 文件,将其复制到 /etc/yum.repos.d下即可:

代码语言:javascript复制
wget https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo -O /etc/yum.repos.d/mssql-server.repo

在线安装 SQL Server

代码语言:javascript复制
yum install mssql-server -y

安装之前先配置足够的内存,过小的内存将不能顺利安装,4GB 以上够用

sqlservr: This program requires a machine with at least 3250 megabytes of memory. Microsoft(R) SQL Server(R) setup failed with error code 1.

善后工作

代码语言:javascript复制
/opt/mssql/bin/sqlservr-setup

根据最新的 MSDN 文档解释,设置 SA 密码和版本,应该是执行:

代码语言:javascript复制
/opt/mssql/bin/mssql-conf setup

接下来是一路 Next, 选择版本和设置 SA 密码

==思考:==

并没有指定 SQL Server 安装在 /opt/mssql 目录下,是怎么配置安装路径的?

一开始提的问题,在安装过程中已经得到了解释,因为这是默认路径。

重新启动 SQL Server Service 使其设置生效:

代码语言:javascript复制
 -------------------------------------------------------------- 
Please run 'sudo /opt/mssql/bin/mssql-conf setup'
to complete the setup of Microsoft SQL Server
 -------------------------------------------------------------- SQL Server needs to be restarted in order to apply this setting. Please run
'systemctl restart mssql-server.service'.
 Verifying  : mssql-server-14.0.3030.27-1.x86_64

检测数据库运行状态

代码语言:javascript复制
systemctl status mssql-server

默认情况下,Linux 的端口是被防火墙给屏蔽的,因此需要打开防火墙对端口的允许,才能使得远程客户端访问本机服务。

代码语言:javascript复制
firewall-cmd --zone=public --add-port=1433/tcp --permanent
firewall-cmd --reload

2 安装命令行管理工具

在没有SSMS(sql server management studio)的环境中,需要安装一些可执行 SQL 的客户端工具,以便用来创建数据库对象以及操作数据。常用的工具有 sqlcmd 和 bcp.

代码语言:javascript复制
curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo

众所周知,任何命令都需要在 PATH 环境中指定路径,才能直接运行,因此需要将 mssql-tools 的执行路径添加到本地或者全局的 PATH 文件中去。路径是默认的 /opt/mssql-tools/bin/

测试 SA 账户的连接:

代码语言:javascript复制
sqlcmd -S localhost -U SA -P '<Password>'

如果碰到连接错误,说明需要换个方式登录本机,即使用 127.0.0.1

代码语言:javascript复制
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x102.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..

方便快捷的安装,如果微软推出一个 community edition, 我估计就没 mysql 啥事儿了。当然是玩笑话,mysql 有其自己的特性,比如插件式存储引擎,别的数据库没有办法取代。

其他客户端工具:

除了 sqlcmd, bcp, SSMS (on Windows),还可以使用以下工具:

  • SQL Operations Studio
  • mssql-cli
  • Visual Studio Code

上述三种都可以跨平台使用。首推 SQL Operations Studio(SOS), 2017年11月出了第一个版本,他的优点在于可视化的 DashBoard, 平时要自己写报表来监控服务器以及数据库健康状态,现在用这个集成工具安装插件就可以实现了。

让我们感受下 SOS(SQL Operations Studio)的轻便和强大

下面一篇即将讨论 Always On Availability Group 在 Linux 上的实现,SQL Server 已经支持 8 个 从库的设计架构,非常值得期待和体验。

0 人点赞