在 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 |
文件系统 | XFS 或 EXT4(其他不支持,比如 BTRFS) |
磁盘空间 | 至少 6GB |
处理器频率 | 2GHz |
处理器核心 | 2 cores |
处理器类型 | 仅支持 x64 |
如果生产环境使用 Network File System (NFS) 远程共享存储,注意以下额外需求:
- 使用 NFS v4.2 及以上版本,旧版本不支持部分必备特性,比如
fallocate
和创建稀疏文件等现代文件系统特性; - 只有数据目录
/var/opt/mssql
可以使用 NFS 挂载,其他文件比如 SQL Server 系统可执行文件不能安装在 NFS 挂载路径中; - 确保在挂载 NFS 远程共享目录时添加
nolock
选项。
安装 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 2017 (14.x)
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2017.repo
SQL Server 2019 (15.x)
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
SQL Server 2022 (16.x)
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
执行命令安装 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
附录
参考链接
- Installation guidance for SQL Server on Linux - Microsoft Learn
- Quickstart: Install SQL Server and create a database on Red Hat - Microsoft Learn
- Quickstart: Install SQL Server and create a database on Red Hat - Microsoft Learn
- Quickstart: Install SQL Server and create a database on Red Hat - Microsoft Learn
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2023-02-01 15:27 PM