快速入门:在 Red Hat 上安装 SQL Server 并创建数据库

适用于: 是SQL Server(所有支持的版本) - Linux

在本快速入门中,将在 Red Hat Enterprise Linux (RHEL) 上安装 SQL Server 2017 或 SQL Server 2019。 然后使用 sqlcmd 进行连接,创建第一个数据库并运行查询。

本快速入门介绍如何在 Red Hat Enterprise Linux (RHEL) 7/8 上安装 SQL Server 2019。 然后使用 sqlcmd 进行连接,创建第一个数据库并运行查询。

提示

本教程需要用户输入和 Internet 连接。 如果对无人参与脱机安装过程感兴趣,请参阅 Linux 上的 SQL Server 的安装指南

先决条件

必须拥有 RHEL 7.3 - 7.8 或 8.0 - 8.3 计算机(内存至少为 2 GB)。

必须拥有 RHEL 7.3 - 7.8 或 8.0 - 8.3 计算机(内存至少为 2 GB)。

若要在自己的计算机上安装 Red Hat Enterprise Linux,请转至 https://access.redhat.com/products/red-hat-enterprise-linux/evaluation。 也可以在 Azure 中创建 RHEL 虚拟机。 请参阅 使用 Azure CLI 创建和管理 Linux VM并在对 az vm create 的调用中使用 --image RHEL

如果以前安装了 SQL Server 的 CTP 或 RC 版本,则必须先删除旧存储库,然后再执行这些步骤。 有关详细信息,请参阅为 SQL Server 2017 和 2019 配置 Linux 存储库

有关其他系统要求,请参阅 Linux 上的 SQL Server 的系统要求

安装 SQL Server

备注

自 CU20 起,SQL Server 2017 开始支持 RHEL 8。 以下用于 SQL Server 2017 的命令指向 RHEL 8 存储库。 RHEL 8 未预安装 SQL Server 所需的 python2。 在开始 SQL Server 的安装步骤之前,请执行以下命令,并验证是否选择了 python2 作为解释器:

sudo alternatives --config python
# If not configured, install python2 and openssl10 using the following commands: 
sudo yum install python2
sudo yum install compat-openssl10
# Configure python2 as the default interpreter using this command: 
sudo alternatives --config python

有关详细信息,请参阅以下博客,了解如何安装 python2 并将其配置为默认解释器: https://www.redhat.com/en/blog/installing-microsoft-sql-server-red-hat-enterprise-linux-8-beta

若要在 RHEL 上配置 SQL Server,请在终端中运行以下命令以安装 mssql-server 包:

  1. 下载 Microsoft SQL Server 2017 Red Hat 存储库配置文件:

    对于 RHEL7:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
    

    对于 RHEL8:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2017.repo
    

    提示

    如果想安装 SQL Server 2019,必须改为注册 SQL Server 2019 存储库。 使用以下命令安装 SQL Server 2019:

    对于 RHEL7:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
    

    对于 RHEL8:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
    
  2. 运行以下命令以安装 SQL Server:

    sudo yum install -y mssql-server
    
  3. 包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本。

    sudo /opt/mssql/bin/mssql-conf setup
    

    提示

    以下 SQL Server 2017 版本是免费提供许可的:Evaluation、Developer 和 Express 版。

    备注

    请确保为 SA 帐户指定强密码(最少 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号)。

  4. 完成配置后,验证服务是否正在运行:

    systemctl status mssql-server
    
  5. 若要允许远程连接,请在 RHEL 的防火墙上打开 SQL Server 端口。 默认的 SQL Server 端口为 TCP 1433。 如果为防火墙使用的是 FirewallD,则可以使用以下命令:

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

此时,SQL Server 正在 RHEL 计算机上运行,随时可以使用!

安装 SQL Server

备注

以下用于 SQL Server 2019 的命令指向 RHEL 8 存储库。 RHEL 8 未预安装 SQL Server 所需的 python2。 在开始 SQL Server 的安装步骤之前,请执行以下命令,并验证是否选择了 python2 作为解释器:

sudo alternatives --config python
# If not configured, install python2 and openssl10 using the following commands: 
sudo yum install python2
sudo yum install compat-openssl10
# Configure python2 as the default interpreter using this command: 
sudo alternatives --config python

有关这些步骤的详细信息,请参阅以下博客,了解如何安装 python2 并将其配置为默认解释器: https://www.redhat.com/en/blog/installing-microsoft-sql-server-red-hat-enterprise-linux-8-beta

若要在 RHEL 上配置 SQL Server,请在终端中运行以下命令以安装 mssql-server 包:

  1. 下载 Microsoft SQL Server 2019 Red Hat 存储库配置文件:

    对于 RHEL7:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
    

    对于 RHEL8:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
    
  2. 运行以下命令以安装 SQL Server:

    sudo yum install -y mssql-server
    
  3. 包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本。

    sudo /opt/mssql/bin/mssql-conf setup
    

    备注

    请确保为 SA 帐户指定强密码(最少 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号)。

  4. 完成配置后,验证服务是否正在运行:

    systemctl status mssql-server
    
  5. 若要允许远程连接,请在 RHEL 的防火墙上打开 SQL Server 端口。 默认的 SQL Server 端口为 TCP 1433。 如果为防火墙使用的是 FirewallD,则可以使用以下命令:

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

此时,SQL Server 2019 正在 RHEL 计算机上运行,随时可以使用!

安装 SQL Server 命令行工具

若要创建数据库,则需要使用可在 SQL Server 上运行 Transact-SQL 语句的工具进行连接。 以下步骤将安装 SQL Server 命令行工具:sqlcmdbcp

  1. 下载 Microsoft Red Hat 存储库配置文件。

    对于 RHEL7:

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

    对于 RHEL8:

    sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
    
  2. 如果安装了早期版本的 mssql-tools,请删除所有旧的 unixODBC 包。

    sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
    
  3. 运行以下命令,以使用 unixODBC 开发人员包安装 mssql-tools。 有关详细信息,请参阅安装 Microsoft ODBC Driver for SQL Server (Linux)

    sudo yum install -y mssql-tools unixODBC-devel
    
  4. 为方便起见,向 PATH 环境变量添加 /opt/mssql-tools/bin/。 这样可以在不指定完整路径的情况下运行这些工具。 运行以下命令以修改登录会话和交互式/非登录会话的路径:

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

本地连接

以下步骤使用 sqlcmd 本地连接到新的 SQL Server 实例。

  1. 使用 SQL Server 名称 (-S),用户名 (-U) 和密码 (-P) 的参数运行 sqlcmd 。 在本教程中,用户进行本地连接,因此服务器名称为 localhost。 用户名为 SA,密码是在安装过程中为 SA 帐户提供的密码。

    sqlcmd -S localhost -U SA -P '<YourPassword>'
    

    提示

    可以在命令行上省略密码,以收到密码输入提示。

    提示

    如果以后决定进行远程连接,请指定 -S 参数的计算机名称或 IP 地址,并确保防火墙上的端口 1433 已打开。

  2. 如果成功,应会显示 sqlcmd 命令提示符:1>

  3. 如果连接失败,先尝试诊断错误消息中所述的问题。 然后查看连接故障排除建议

创建和查询数据

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

新建数据库

以下步骤创建一个名为 TestDB 的新数据库。

  1. 在 sqlcmd 命令提示符中,粘贴以下 Transact-SQL 命令以创建测试数据库:

    CREATE DATABASE TestDB
    
  2. 在下一行中,编写一个查询以返回服务器上所有数据库的名称:

    SELECT Name from sys.Databases
    
  3. 前两个命令没有立即执行。 必须在新行中键入 GO 才能执行以前的命令:

    GO
    

提示

若要详细了解如何编写 Transact-SQL 语句和查询,请参阅教程:编写 Transact-SQL 语句

插入数据

接下来创建一个新表 Inventory,然后插入两个新行。

  1. 在 sqlcmd 命令提示符中,将上下文切换到新的 TestDB 数据库:

    USE TestDB
    
  2. 创建名为 Inventory 的新表:

    CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
    
  3. 将数据插入新表:

    INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
    
  4. 要执行上述命令的类型 GO

    GO
    

选择数据

现在,运行查询以从 Inventory 表返回数据。

  1. 通过 sqlcmd 命令提示符输入查询,以返回 Inventory 表中数量大于 152 的行:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. 执行此命令:

    GO
    

退出 sqlcmd 命令提示符

要结束 sqlcmd 会话,请键入 QUIT

QUIT

性能最佳做法

在 Linux 上安装 SQL Server 后,请查看配置 Linux 和 SQL Server 以提高生产性能的最佳做法。 有关详细信息,请参阅 Linux 上的 SQL Server 的性能最佳做法和配置指南

跨平台数据工具

除“sqlcmd”以外,还可以使用以下跨平台工具来管理 SQL Server :

工具 说明
Azure Data Studio 跨平台 GUI 数据库管理实用程序。
Visual Studio Code 一种跨平台 GUI 代码编辑器,它使用 mssql 扩展运行 Transact-SQL 语句。
PowerShell Core 基于 cmdlet 的跨平台自动化和配置工具。
mssql-cli 用于运行 Transact-SQL 命令的跨平台命令行接口。

从 Windows 连接

Windows 上的 SQL Server 工具连接到 Linux 上的 SQL Server 实例,操作方式与连接到任何远程 SQL Server 实例一样。

如果有一台可以连接到 Linux 计算机的 Windows 计算机,请从运行 sqlcmd 的 Windows 命令提示符尝试执行本主题中的相同步骤。 仅验证所使用的是目标 Linux 计算机名称或 IP 地址,而非 localhost,并确保 TCP 端口 1433 已打开。 如果从 Windows 进行连接存在任何问题,请参阅连接故障排除建议

有关在 Windows 上运行,但连接到 Linux 上的 SQL Server 的其他工具,请参阅:

其他部署方案

有关其他安装方案,请参阅以下资源:

  • 升级:了解如何升级 Linux 版 SQL Server 的现有安装
  • 卸载:在 Linux 上卸载 SQL Server
  • 无人参与的安装:了解如何编写无提示安装脚本
  • 脱机安装:了解如何手动下载脱机安装程序包

提示

有关常见问题的解答,请参阅 Linux 上的 SQL Server 常见问题解答

后续步骤