Quickstart: Install SQL Server and create a database on Ubuntu
Applies to:
SQL Server - Linux
In this quickstart, you install SQL Server 2017 (14.x) on Ubuntu 18.04. 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 Ubuntu 20.04. 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 Ubuntu 20.04. 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 2022 (16.x) on Linux.
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.
If you choose to have a pre-installed SQL Server VM on Ubuntu ready to run your production-based workload, then please follow the best practices for creating the SQL Server VM.
Azure Marketplace images
You can create your VM based on one of the following two Azure Marketplace images:
When you use these images, 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 Ubuntu Pro using the above Marketplace images, are fully supported by both Microsoft and Canonical.
You can configure SQL Server on Linux with mssql-conf, using the following command:
sudo /opt/mssql/bin/mssql-conf setup
Azure Marketplace image
You can create your VM based on the following Azure Marketplace image: Ubuntu 20.04.
When you use this 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 Ubuntu Pro using the above Marketplace images, are fully supported by both Microsoft and Canonical.
You can configure SQL Server on Linux with mssql-conf, using the following command:
sudo /opt/mssql/bin/mssql-conf setup
Prerequisites
You must have an Ubuntu 18.04 machine with at least 2 GB of memory.
To install Ubuntu 18.04 on your own machine, go to https://releases.ubuntu.com/18.04/. You can also create Ubuntu virtual machines in Azure. See Create and Manage Linux VMs with the Azure CLI.
You must have an Ubuntu 20.04 machine with at least 2 GB of memory.
To install Ubuntu 20.04 on your own machine, go to https://releases.ubuntu.com/20.04/. You can also create Ubuntu virtual machines in Azure. See Create and Manage Linux VMs with the Azure CLI.
You must have an Ubuntu 20.04 machine with at least 2 GB of memory.
To install Ubuntu 20.04 on your own machine, go to https://releases.ubuntu.com/20.04/. You can also create Ubuntu virtual machines in Azure. See Create and Manage Linux VMs with the Azure CLI.
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 Linux repositories for SQL Server.
The Windows Subsystem for Linux isn't supported as an installation target for SQL Server.
For other system requirements, see System requirements for SQL Server on Linux.
Install SQL Server
To configure SQL Server on Ubuntu, run the following commands in a terminal to install the mssql-server package.
Import the public repository GPG keys:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Register the SQL Server Ubuntu repository:
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2017.list)"
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 commands to install SQL Server:
sudo apt-get update sudo apt-get 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. As a reminder, the following SQL Server editions are freely licensed: Evaluation, Developer, and Express.sudo /opt/mssql/bin/mssql-conf setup
Remember to specify a strong password for the SA account. You need a 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 --no-pager
If you plan to connect remotely, you might also need to open the SQL Server TCP port (default 1433) on your firewall.
Import the public repository GPG keys:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Register the SQL Server Ubuntu repository:
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
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 commands to install SQL Server:
sudo apt-get update sudo apt-get 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. As a reminder, the following SQL Server editions are freely licensed: Evaluation, Developer, and Express.sudo /opt/mssql/bin/mssql-conf setup
Remember to specify a strong password for the SA account. You need a 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 --no-pager
If you plan to connect remotely, you might also need to open the SQL Server TCP port (default 1433) on your firewall.
Import the public repository GPG keys:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Register the SQL Server Ubuntu repository:
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"
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 commands to install SQL Server:
sudo apt-get update sudo apt-get 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. As a reminder, the following SQL Server editions are freely licensed: Evaluation, Developer, and Express.sudo /opt/mssql/bin/mssql-conf setup
Remember to specify a strong password for the SA account. You need a 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 --no-pager
If you plan to connect remotely, you might also need to open the SQL Server TCP port (default 1433) on your firewall.
At this point, SQL Server is running on your Ubuntu 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 SQL Server. The following steps install the SQL Server command-line tools: sqlcmd and bcp.
Use the following steps to install the mssql-tools on Ubuntu. If curl isn't installed, you can run this code:
sudo apt-get update
sudo apt install curl
Import the public repository GPG keys.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Register the Ubuntu repository.
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
Update the sources list and run the installation command with the
unixODBC
developer package. For more information, see Install the Microsoft ODBC driver for SQL Server (Linux).sudo apt-get update sudo apt-get install mssql-tools unixodbc-dev
You can update to the latest version of mssql-tools using the following commands:
sudo apt-get update sudo apt-get install mssql-tools
For convenience, add
/opt/mssql-tools/bin/
to yourPATH
environment variable, to make sqlcmd or bcp accessible from the bash shell.For interactive sessions, modify the
PATH
environment variable in your~/.bash_profile
file with the following command:echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
For non-interactive sessions, modify the
PATH
environment variable in your~/.bashrc
file with the following command: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 islocalhost
. 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>'
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.
Create and query data
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: Writing Transact-SQL Statements.
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
Insert data
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
Select data
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
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. 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:
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
For answers to frequently asked questions, see the SQL Server on Linux FAQ.
Next steps
Contribute to SQL documentation
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 How to contribute to SQL Server documentation
Import the public repository GPG keys.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Register the Ubuntu repository.
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
Update the sources list and run the installation command with the
unixODBC
developer package. For more information, see Install the Microsoft ODBC driver for SQL Server (Linux).sudo apt-get update sudo apt-get install mssql-tools unixodbc-dev
You can update to the latest version of mssql-tools using the following commands:
sudo apt-get update sudo apt-get install mssql-tools
For convenience, add
/opt/mssql-tools/bin/
to yourPATH
environment variable, to make sqlcmd or bcp accessible from the bash shell.For interactive sessions, modify the
PATH
environment variable in your~/.bash_profile
file with the following command:echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
For non-interactive sessions, modify the
PATH
environment variable in your~/.bashrc
file with the following command: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 islocalhost
. 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>'
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.
Create and query data
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: Writing Transact-SQL Statements.
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
Insert data
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
Select data
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
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. 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:
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
For answers to frequently asked questions, see the SQL Server on Linux FAQ.
Next steps
Contribute to SQL documentation
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 How to contribute to SQL Server documentation
Import the public repository GPG keys.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
Register the Ubuntu repository.
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
Update the sources list and run the installation command with the
unixODBC
developer package. For more information, see Install the Microsoft ODBC driver for SQL Server (Linux).sudo apt-get update sudo apt-get install mssql-tools unixodbc-dev
You can update to the latest version of mssql-tools using the following commands:
sudo apt-get update sudo apt-get install mssql-tools
For convenience, add
/opt/mssql-tools/bin/
to yourPATH
environment variable, to make sqlcmd or bcp accessible from the bash shell.For interactive sessions, modify the
PATH
environment variable in your~/.bash_profile
file with the following command:echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
For non-interactive sessions, modify the
PATH
environment variable in your~/.bashrc
file with the following command: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 islocalhost
. 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>'
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.
Create and query data
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: Writing Transact-SQL Statements.
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
Insert data
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
Select data
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
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. 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:
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
For answers to frequently asked questions, see the SQL Server on Linux FAQ.
Next steps
Contribute to SQL documentation
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 How to contribute to SQL Server documentation
Feedback
Submit and view feedback for