Quickstart: Install SQL Server and create a database on Red Hat
Applies to: SQL Server (all supported versions)
In this quickstart, you install SQL Server 2017 or SQL Server 2019 on Red Hat Enterprise Linux (RHEL). You then connect with sqlcmd to create your first database and run queries.
In this quickstart, you install SQL Server 2019 on Red Hat Enterprise Linux (RHEL) 7/8. You then connect with sqlcmd to create your first database and run queries.
Tip
This tutorial requires user input and an internet connection. If you are interested in the unattended or offline installation procedures, see Installation guidance for SQL Server on Linux.
Prerequisites
You must have a RHEL 7.3 - 7.8, or 8.0 - 8.3 machine with at least 2 GB of memory.
You must have a RHEL 7.3 - 7.8, or 8.0 - 8.3 machine with at least 2 GB of memory.
To install Red Hat Enterprise Linux on your own machine, go to https://access.redhat.com/products/red-hat-enterprise-linux/evaluation. You can also create RHEL virtual machines in Azure. See Create and Manage Linux VMs with the Azure CLI, and use --image RHEL
in the call to az vm create
.
If you have previously installed a CTP or RC release of SQL Server, you must first remove the old repository before following these steps. For more information, see Configure Linux repositories for SQL Server 2017 and 2019.
For other system requirements, see System requirements for SQL Server on Linux.
Install SQL Server
Note
RHEL 8 is supported for SQL Server 2017 starting with CU20. The following commands for SQL Server 2017 points to the RHEL 8 repository. RHEL 8 does not come preinstalled with python2, which is required by SQL Server. Before you begin the SQL Server install steps, execute the command and verify that python2 is selected as the interpreter:
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
For more information, see the following blog on installing python2 and configuring it as the default interpreter: https://www.redhat.com/en/blog/installing-microsoft-sql-server-red-hat-enterprise-linux-8-beta.
To configure SQL Server on RHEL, run the following commands in a terminal to install the mssql-server package:
Download the Microsoft SQL Server 2017 Red Hat repository configuration file:
For RHEL7:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
For RHEL8:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2017.repo
Tip
If you want to install SQL Server 2019 , you must instead register the SQL Server 2019 repository. Use the following command for SQL Server 2019 installations:
For RHEL7:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
For RHEL8:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
Run the following commands to install SQL Server:
sudo yum install -y mssql-server
After the package installation finishes, run mssql-conf setup and follow the prompts to set the SA password and choose your edition.
sudo /opt/mssql/bin/mssql-conf setup
Tip
The following SQL Server 2017 editions are freely licensed: Evaluation, Developer, and Express.
Note
Make sure to specify a strong password for the SA account (Minimum length 8 characters, including uppercase and lowercase letters, base 10 digits and/or non-alphanumeric symbols).
Once the configuration is done, verify that the service is running:
systemctl status mssql-server
To allow remote connections, open the SQL Server port on the firewall on RHEL. The default SQL Server port is TCP 1433. If you are using FirewallD for your firewall, you can use the following commands:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent sudo firewall-cmd --reload
At this point, SQL Server is running on your RHEL machine and is ready to use!
Install SQL Server
Note
The following commands for SQL Server 2019 points to the RHEL 8 repository. RHEL 8 does not come preinstalled with python2, which is required by SQL Server. Before you begin the SQL Server install steps, execute the command and verify that python2 is selected as the interpreter:
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
For more information about these steps, see the following blog on installing python2 and configuring it as the default interpreter: https://www.redhat.com/en/blog/installing-microsoft-sql-server-red-hat-enterprise-linux-8-beta.
To configure SQL Server on RHEL, run the following commands in a terminal to install the mssql-server package:
Download the Microsoft SQL Server 2019 Red Hat repository configuration file:
For RHEL7:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
For RHEL8:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
Run the following commands to install SQL Server:
sudo yum install -y mssql-server
After the package installation finishes, run mssql-conf setup and follow the prompts to set the SA password and choose your edition.
sudo /opt/mssql/bin/mssql-conf setup
Note
Make sure to specify a strong password for the SA account (Minimum length 8 characters, including uppercase and lowercase letters, base 10 digits and/or non-alphanumeric symbols).
Once the configuration is done, verify that the service is running:
systemctl status mssql-server
To allow remote connections, open the SQL Server port on the firewall on RHEL. The default SQL Server port is TCP 1433. If you are using FirewallD for your firewall, you can use the following commands:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent sudo firewall-cmd --reload
At this point, SQL Server 2019 is running on your RHEL machine and is ready to use!
Install the SQL Server command-line tools
To create a database, you need to connect with a tool that can run Transact-SQL statements on the SQL Server. The following steps install the SQL Server command-line tools: sqlcmd and bcp.
Download the Microsoft Red Hat repository configuration file.
For RHEL7:
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
For RHEL8:
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
If you had a previous version of mssql-tools installed, remove any older unixODBC packages.
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
Run the following commands to install mssql-tools with the unixODBC developer package. For more information, see Install the Microsoft ODBC driver for SQL Server (Linux).
sudo yum install -y mssql-tools unixODBC-devel
For convenience, add
/opt/mssql-tools/bin/
to your PATH environment variable. This enables you to run the tools without specifying the full path. Run the following commands to modify the PATH for both login sessions and interactive/non-login sessions:echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc
Connect locally
The following steps use sqlcmd to locally connect to your new SQL Server instance.
Run sqlcmd with parameters for your SQL Server name (-S), the user name (-U), and the password (-P). In this tutorial, you are connecting locally, so the server name is
localhost
. The user name isSA
and the password is the one you provided for the SA account during setup.sqlcmd -S localhost -U SA -P '<YourPassword>'
Tip
You can omit the password on the command line to be prompted to enter it.
Tip
If you later decide to connect remotely, specify the machine name or IP address for the -S parameter, and make sure port 1433 is open on your firewall.
If successful, you should get to a sqlcmd command prompt:
1>
.If you get a connection failure, first attempt to diagnose the problem from the error message. Then review the connection troubleshooting recommendations.
Create and query data
The following sections walk you through using sqlcmd to create a new database, add data, and run a simple query.
Create a new database
The following steps create a new database named TestDB
.
From the sqlcmd command prompt, paste the following Transact-SQL command to create a test database:
CREATE DATABASE TestDB
On the next line, write a query to return the name of all of the databases on your server:
SELECT Name from sys.Databases
The previous two commands were not executed immediately. You must type
GO
on a new line to execute the previous commands:GO
Tip
To learn more about writing Transact-SQL statements and queries, see Tutorial: Writing Transact-SQL Statements.
Insert data
Next create a new table, Inventory
, and insert two new rows.
From the sqlcmd command prompt, switch context to the new
TestDB
database:USE TestDB
Create new table named
Inventory
:CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
Insert data into the new table:
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
Type
GO
to execute the previous commands:GO
Select data
Now, run a query to return data from the Inventory
table.
From the sqlcmd command prompt, enter a query that returns rows from the
Inventory
table where the quantity is greater than 152:SELECT * FROM Inventory WHERE quantity > 152;
Execute the command:
GO
Exit the sqlcmd command prompt
To end your sqlcmd session, type QUIT
:
QUIT
Performance best practices
After installing SQL Server on Linux, review the best practices for configuring Linux and SQL Server to improve performance for production scenarios. For more information, see Performance best practices and configuration guidelines for SQL Server on Linux.
Cross-platform data tools
In addition to sqlcmd, you can use the following cross-platform tools to manage SQL Server:
Tool | Description |
---|---|
Azure Data Studio | A cross-platform GUI database management utility. |
Visual Studio Code | A cross-platform GUI code editor that run Transact-SQL statements with the mssql extension. |
PowerShell Core | A cross-platform automation and configuration tool based on cmdlets. |
mssql-cli | A cross-platform command-line interface for running Transact-SQL commands. |
Connecting from Windows
SQL Server tools on Windows connect to SQL Server instances on Linux in the same way they would connect to any remote SQL Server instance.
If you have a Windows machine that can connect to your Linux machine, try the same steps in this topic from a Windows command-prompt running sqlcmd. Just verify that you use the target Linux machine name or IP address rather than localhost, and make sure that TCP port 1433 is open. If you have any problems connecting from Windows, see connection troubleshooting recommendations.
For other tools that run on Windows but connect to SQL Server on Linux, see:
Other deployment scenarios
For other installation scenarios, see the following resources:
- Upgrade: Learn how to upgrade an existing installation of SQL Server on Linux
- Uninstall: Uninstall SQL Server on Linux
- Unattended install: Learn how to script the installation without prompts
- Offline install: Learn how to manually download the packages for offline installation
Tip
For answers to frequently asked questions, see the SQL Server on Linux FAQ.