Events
31 Mar, 23 - 02 Apr, 23
The biggest SQL, Fabric and Power BI learning event. March 31 – April 2. Use code FABINSIDER to save $400.
Register todayThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Applies to:
SQL Server - Linux
In this quickstart, you install SQL Server 2017 (14.x) on Red Hat Enterprise Linux (RHEL) 8.x. Then you can connect with sqlcmd to create your first database and run queries.
For more information on supported platforms, see Release notes for SQL Server 2017 on Linux.
In this quickstart, you install SQL Server 2019 (15.x) on Red Hat Enterprise Linux (RHEL) 8.x. Then you can connect with sqlcmd to create your first database and run queries.
For more information on supported platforms, see Release notes for SQL Server 2019 on Linux.
In this quickstart, you install SQL Server 2022 (16.x) on Red Hat Enterprise Linux (RHEL) 8.x or 9.x. Then you can connect with sqlcmd to create your first database and run queries.
If you would like to automate your installation using Ansible, see Quickstart: Deploy SQL Server on Linux using an Ansible playbook.
For more information on supported platforms, see Release notes for SQL Server 2022 on Linux.
Tip
This tutorial requires user input and an internet connection. If you're interested in the unattended or offline installation procedures, see Installation guidance for SQL Server on Linux. If you choose to have a preinstalled SQL Server VM on RHEL ready to run your production-based workload, follow the best practices for creating the SQL Server VM.
You can create your VM based on the following Azure Marketplace image:
When you use the above marketplace image, you avoid the installation step, and can directly configure the instance by providing the SKU and the sa
password needed to get started with SQL Server. SQL Server Azure VMs deployed on RHEL using the above Marketplace images, are fully supported by both Microsoft and Red Hat.
You can configure SQL Server on Linux with mssql-conf, using the following command:
sudo /opt/mssql/bin/mssql-conf setup
You must have a RHEL 8.x 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've previously installed a Community Technology Preview (CTP) or Release Candidate (RC) of SQL Server, you must first remove the old repository before following these steps. For more information, see Configure repositories for installing and upgrading SQL Server on Linux.
For other system requirements, see System requirements for SQL Server on Linux.
To ensure you configure your SQL Server instance according to the recommended standards, see Performance best practices and configuration guidelines for SQL Server on Linux.
The following commands for installing SQL Server point to the RHEL 8 repository. RHEL 8 doesn't 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 SQL Server 2017 (14.x) Red Hat repository configuration file:
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 a different version of SQL Server, see the SQL Server 2019 (15.x) or SQL Server 2022 (16.x) versions of this article.
Run the following command to install SQL Server:
sudo yum install -y mssql-server
After the package installation finishes, run mssql-conf setup
using its full path, and follow the prompts to set the sa
password and choose your edition. As a reminder, the following SQL Server editions are freely licensed: Evaluation, Developer, and Express.
sudo /opt/mssql/bin/mssql-conf setup
Caution
Your password should follow the SQL Server default password policy. By default, the password must be at least eight characters long and contain characters from three of the following four sets: uppercase letters, lowercase letters, base-10 digits, and symbols. Passwords can be up to 128 characters long. Use passwords that are as long and complex as possible.
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 RHEL firewall. The default SQL Server port is TCP 1433. If you're 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!
The following commands for installing SQL Server point to the RHEL 8 repository. RHEL 8 doesn't 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 SQL Server 2019 (15.x) Red Hat repository configuration file:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
Tip
If you want to install a different version of SQL Server, see the SQL Server 2017 (14.x) or SQL Server 2022 (16.x) versions of this article.
Run the following command to install SQL Server:
sudo yum install -y mssql-server
After the package installation finishes, run mssql-conf setup
using its full path, and follow the prompts to set the sa
password and choose your edition. As a reminder, the following SQL Server editions are freely licensed: Evaluation, Developer, and Express.
sudo /opt/mssql/bin/mssql-conf setup
Caution
Your password should follow the SQL Server default password policy. By default, the password must be at least eight characters long and contain characters from three of the following four sets: uppercase letters, lowercase letters, base-10 digits, and symbols. Passwords can be up to 128 characters long. Use passwords that are as long and complex as possible.
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 RHEL firewall. The default SQL Server port is TCP 1433. If you're 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!
The following commands for installing SQL Server point to the RHEL 8 repository.
To configure SQL Server on RHEL, run the following commands in a terminal to install the mssql-server
package:
Download the SQL Server 2022 (16.x) Red Hat 8 repository configuration file:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
Tip
If you want to install a different version of SQL Server, see the SQL Server 2017 (14.x) or SQL Server 2019 (15.x) versions of this article.
Run the following command to install SQL Server:
sudo yum install -y mssql-server
After the package installation finishes, run mssql-conf setup
using its full path, and follow the prompts to set the sa
password and choose your edition. As a reminder, the following SQL Server editions are freely licensed: Evaluation, Developer, and Express.
sudo /opt/mssql/bin/mssql-conf setup
Caution
Your password should follow the SQL Server default password policy. By default, the password must be at least eight characters long and contain characters from three of the following four sets: uppercase letters, lowercase letters, base-10 digits, and symbols. Passwords can be up to 128 characters long. Use passwords that are as long and complex as possible.
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 RHEL firewall. The default SQL Server port is TCP 1433. If you're 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!
When you connect to your SQL Server instance using the system administrator (sa
) account for the first time after installation, it's important for you to follow these steps, and then immediately disable the sa
account as a security best practice.
Create a new login, and make it a member of the sysadmin server role.
Depending on whether you have a container or non-container deployment, enable Windows authentication, and create a new Windows-based login and add it to the sysadmin server role.
Otherwise, create a login using SQL Server authentication, and add it to the sysadmin server role.
Connect to the SQL Server instance using the new login you created.
Disable the sa
account, as recommended for security best practice.
To create a database, you need to connect with a tool that can run Transact-SQL statements on SQL Server. The following steps install the SQL Server command-line tools: sqlcmd utility and bcp utility.
Use the following steps to install the mssql-tools18 on Red Hat Enterprise Linux.
Download the Microsoft Red Hat repository configuration file.
For Red Hat 9, use the following command:
curl https://packages.microsoft.com/config/rhel/9/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
For Red Hat 8, use the following command:
curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
For Red Hat 7, use the following command:
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
If you had a previous version of mssql-tools installed, remove any older unixODBC packages.
sudo yum remove mssql-tools unixODBC-utf16 unixODBC-utf16-devel
Run the following commands to install mssql-tools18 with the unixODBC developer package.
sudo yum install -y mssql-tools18 unixODBC-devel
To update to the latest version of mssql-tools, run the following commands:
sudo yum check-update
sudo yum update mssql-tools18
Optional: Add /opt/mssql-tools18/bin/
to your PATH
environment variable in a bash shell.
To make sqlcmd and bcp accessible from the bash shell for login sessions, modify your PATH
in the ~/.bash_profile
file with the following command:
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
source ~/.bash_profile
To make sqlcmd and bcp accessible from the bash shell for interactive/non-login sessions, modify the PATH
in the ~/.bashrc
file with the following command:
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
The following steps use sqlcmd to locally connect to your new SQL Server instance.
Caution
Your password should follow the SQL Server default password policy. By default, the password must be at least eight characters long and contain characters from three of the following four sets: uppercase letters, lowercase letters, base-10 digits, and symbols. Passwords can be up to 128 characters long. Use passwords that are as long and complex as possible.
Run sqlcmd with parameters for your SQL Server name (-S
), the user name (-U
), and the password (-P
). In this tutorial, you connect locally, so the server name is localhost
. The user name is sa
and the password is the one you provided for the sa
account during setup.
sqlcmd -S localhost -U sa -P '<password>'
Note
Newer versions of sqlcmd are secure by default. For more information about connection encryption, see sqlcmd utility for Windows, and Connecting with sqlcmd for Linux and macOS. If the connection doesn't succeed, you can add the -No
option to sqlcmd to specify that encryption is optional, not mandatory.
You can omit the password on the command line to be prompted to enter it.
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.
The following sections walk you through using sqlcmd to create a new database, add data, and run a simple query.
For more information about writing Transact-SQL statements and queries, see Tutorial: Write Transact-SQL statements.
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 aren't executed immediately. You must type GO
on a new line to execute the previous commands:
GO
Next create a new table, dbo.Inventory
, and insert two new rows.
From the sqlcmd command prompt, switch context to the new TestDB
database:
USE TestDB;
Create new table named dbo.Inventory
:
CREATE TABLE dbo.Inventory
(
id INT,
name NVARCHAR (50),
quantity INT,
PRIMARY KEY (id)
);
Insert data into the new table:
INSERT INTO dbo.Inventory
VALUES (1, 'banana', 150);
INSERT INTO dbo.Inventory
VALUES (2, 'orange', 154);
Type GO
to execute the previous commands:
GO
Now, run a query to return data from the dbo.Inventory
table.
From the sqlcmd command prompt, enter a query that returns rows from the dbo.Inventory
table where the quantity is greater than 152:
SELECT *
FROM dbo.Inventory
WHERE quantity > 152;
Execute the command:
GO
To end your sqlcmd session, type QUIT
:
QUIT
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.
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. |
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. You must use the target Linux machine name or IP address rather than localhost
, and make sure that TCP port 1433 is open on the SQL Server machine. 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:
For other installation scenarios, see the following resources:
For answers to frequently asked questions, see the SQL Server on Linux FAQ.
Did you know that you can edit SQL content yourself? If you do so, not only do you help improve our documentation, but you also get credited as a contributor to the page.
For more information, see Edit Microsoft Learn documentation.
Events
31 Mar, 23 - 02 Apr, 23
The biggest SQL, Fabric and Power BI learning event. March 31 – April 2. Use code FABINSIDER to save $400.
Register todayTraining
Certification
Microsoft Certified: Azure Database Administrator Associate - Certifications
Administer an SQL Server database infrastructure for cloud, on-premises and hybrid relational databases using the Microsoft PaaS relational database offerings.
Documentation
SUSE: Install SQL Server on Linux - SQL Server
This quickstart shows how to install SQL Server on SUSE Linux Enterprise Server and then create and query a database with sqlcmd.
Configure Repositories for Installing and Upgrading SQL Server on Linux - SQL Server
Check and configure source repositories for SQL Server on Linux. The source repository affects the version of SQL Server that is applied during installation and upgrade.
Ubuntu: Install SQL Server on Linux - SQL Server
This quickstart shows how to install SQL Server 2017 and later versions on Ubuntu and then create and query a database with sqlcmd.