在 CentOS 8 部署微软 SQL Server 2017/2019/2022 数据库
后知后觉 暂无评论

在 RHEL 8、CentOS 8 或 CentOS Stream 8 系统中安装微软 SQL Server。

先决条件

最少拥有 2GB 内存的 RHEL 8.0 ~ 8.6 版本(对应 CentOS 8.0 ~ 8.5 或 CentOS Steam 8.x)

系统需求

需求
内存2GB
文件系统XFSEXT4(其他不支持,比如 BTRFS
磁盘空间至少 6GB
处理器频率2GHz
处理器核心2 cores
处理器类型仅支持 x64

如果生产环境使用 Network File System (NFS) 远程共享存储,注意以下额外需求:

安装 SQL Server 服务端

安装依赖

在 2017 和 2019 版本需要执行此部分内容,2022 及之后版本直接跳过。

sudo dnf install compat-openssl10 python2

将 python2 切换为系统默认版本(具体选择序号请根据实际情况选择)

$ sudo alternatives --config python

There are 3 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/libexec/no-python
   2           /usr/bin/python3
   3           /usr/bin/python2

Enter to keep the current selection[+], or type selection number: 3

安装 SQL Server

下载软件仓库

执行命令安装 SQL Server

sudo dnf install -y mssql-server

安装完成后执行命令进行数据库初始化配置,根据提示选择配置授权类型和管理员密码。其中三个授权为免费类型:Evalution(试用)、Developer(开发者)、Express(快递)。其中 ## 下一行为执行命令或者需要进行操作的节点。

## 执行命令进行配置
$ sudo /opt/mssql/bin/mssql-conf setup
Choose an edition of SQL Server:
  1) Evaluation (free, no production use rights, 180-day limit)
  2) Developer (free, no production use rights)
  3) Express (free)
  4) Web (PAID)
  5) Standard (PAID)
  6) Enterprise (PAID)
  7) Enterprise Core (PAID)
  8) I bought a license through a retail sales channel and have a product key to enter.

Details about editions can be found at
https://go.microsoft.com/fwlink/?LinkId=852748&clcid=0x409

Use of PAID editions of this software requires separate licensing through a
Microsoft Volume Licensing program.
By choosing a PAID edition, you are verifying that you have the appropriate
number of licenses in place to install and run this software.

## 注意这里请按需要选择授权类型,2为开发者免费授权,但商用请使用正式授权
Enter your edition(1-8): 2
The license terms for this product can be found in
/usr/share/doc/mssql-server or downloaded from:
https://go.microsoft.com/fwlink/?LinkId=855862&clcid=0x409

The privacy statement can be viewed at:
https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x409

## 接受使用协议
Do you accept the license terms? [Yes/No]:Yes

## 配置数据库管理员账户密码
Enter the SQL Server system administrator password: <输入密码>
Confirm the SQL Server system administrator password: <重复密码>
Configuring SQL Server...

ForceFlush is enabled for this instance.
ForceFlush feature is enabled for log durability.
Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server.service → /usr/lib/systemd/system/mssql-server.service.
Setup has completed successfully. SQL Server is now starting.

配置完成后检查启动状态,若显示绿色 active (running) 即为配置成功。

sudo systemctl status mssql-server

如果开启了防火墙,则还需要配置防火墙规则,否则请跳过。

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

安装 SQL Server 命令行工具

配置仓库

sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo

如果安装了早期版本的 mssql-tools,请先删除旧版本包。

sudo dnf remove -y unixODBC-utf16 unixODBC-utf16-devel

安装 SQL Server 数据库命令行工具

sudo ACCEPT_EULA=Y dnf install -y mssql-tools unixODBC-devel

配置执行 PATH

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

本地连接数据库

执行命令,替换引号中密码为实际配置的密码。

sqlcmd -S localhost -U sa -P '<YourPassword>'
小贴士:-S 指定服务器地址,-U 指定用户名,-P 指定密码,密码部分可以省略,会收到密码输入提示。

如果未能连接请检查防火墙状态和服务状态,连接成功会显示数据库命令标识。

1>

创建和查询数据

下面各部分将逐步介绍如何使用 sqlcmd 新建数据库、添加数据并运行简单查询。

有关编写 Transact-SQL 语句和查询的详细信息,请参阅教程:编写 Transact-SQL 语句

新建数据库

按下面输入命令(数字> 后是需要键入的命令)

1> CREATE DATABASE TestDB;
2> SELECT Name from sys.databases;
3> GO
Name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
TestDB

(5 rows affected)

插入数据

按下面输入命令(数字> 后是需要键入的命令)

1> USE TestDB;
2> CREATE TABLE dbo.Inventory (
3>    id INT, name NVARCHAR(50),
4>    quantity INT
5> );
6> INSERT INTO dbo.Inventory VALUES (1, 'banana', 150);
7> INSERT INTO dbo.Inventory VALUES (2, 'orange', 154);
8> GO
Changed database context to 'TestDB'.

(1 rows affected)

(1 rows affected)

查询数据

按下面输入命令(数字> 后是需要键入的命令)

1> SELECT * FROM dbo.Inventory
2> WHERE quantity > 152;
3> GO
id          name                                               quantity
----------- -------------------------------------------------- -----------
          2 orange                                                     154

(1 rows affected)

退出

1> QUIT

附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。