---
title: Configure environment variables for SQL Server on Linux
description: This article describes how to use environment variables to configure specific SQL Server settings on Linux.
author: VanMSFT
ms.author: vanto
ms.date: 03/31/2022
ms.service: sql
ms.subservice: linux
ms.topic: conceptual
---
# Configure SQL Server settings with environment variables on Linux
[!INCLUDE [SQL Server - Linux](../includes/applies-to-version/sql-linux.md)]
::: moniker range="= sql-server-linux-2017 || = sql-server-2017"
You can use several different environment variables to configure SQL Server 2017 on Linux. These variables are used in two scenarios:
::: moniker-end
::: moniker range=">= sql-server-linux-ver15 || >= sql-server-ver15 "
You can use several different environment variables to configure SQL Server 2019 on Linux. These variables are used in two scenarios:
::: moniker-end
- To configure initial setup with the `mssql-conf setup` command.
- To configure a new [SQL Server container in Docker](quickstart-install-connect-docker.md).
> [!TIP]
> If you need to configure SQL Server after these setup scenarios, see [Configure SQL Server on Linux with the mssql-conf tool](sql-server-linux-configure-mssql-conf.md).
## Environment variables
::: moniker range="= sql-server-linux-2017 || = sql-server-2017"
| Environment variable | Description |
|-----|-----|
| **ACCEPT_EULA** | Set the **ACCEPT_EULA** variable to any value to confirm your acceptance of the [End-User Licensing Agreement](https://go.microsoft.com/fwlink/?LinkId=746388). Required setting for the SQL Server image. |
| **MSSQL_SA_PASSWORD** | Configure the SA user password.
The `SA_PASSWORD` environment variable is deprecated. Please use `MSSQL_SA_PASSWORD` instead. |
| **MSSQL_PID** | Set the SQL Server edition or product key. Possible values include: **Evaluation****Developer****Express****Web****Standard****Enterprise****A product key**If specifying a product key, it must be in the form of #####-#####-#####-#####-#####, where '#' is a number or a letter.|
| **MSSQL_LCID** | Sets the language ID to use for SQL Server. For example 1036 is French. |
| **MSSQL_COLLATION** | Sets the default collation for SQL Server. This overrides the default mapping of language ID (LCID) to collation. |
| **MSSQL_MEMORY_LIMIT_MB** | Sets the maximum amount of memory (in MB) that SQL Server can use. By default, it's 80% of the total physical memory. |
| **MSSQL_TCP_PORT** | Configure the TCP port that SQL Server listens on (default 1433). |
| **MSSQL_IP_ADDRESS** | Set the IP address. Currently, the IP address must be IPv4 style (0.0.0.0). |
| **MSSQL_BACKUP_DIR** | Set the Default backup directory location. |
| **MSSQL_DATA_DIR** | Change the directory where the new SQL Server database data files (.mdf) are created. |
| **MSSQL_LOG_DIR** | Change the directory where the new SQL Server database log (.ldf) files are created. |
| **MSSQL_DUMP_DIR** | Change the directory where SQL Server will deposit the memory dumps and other troubleshooting files by default. |
| **MSSQL_ENABLE_HADR** | Enable Availability Group. For example, '1' is enabled, and '0' is disabled |
| **MSSQL_AGENT_ENABLED** | Enable SQL Server Agent. For example, 'true' is enabled and 'false' is disabled. By default, agent is disabled. |
| **MSSQL_MASTER_DATA_FILE** | Sets the location of the master database data file. Must be named **master.mdf** until first run of SQL Server. |
| **MSSQL_MASTER_LOG_FILE** | Sets the location of the master database log file. Must be named **mastlog.ldf** until first run of SQL Server. |
| **MSSQL_ERROR_LOG_FILE** | Sets the location of the `errorlog` files. |
::: moniker-end
::: moniker range=">= sql-server-linux-ver15 || >= sql-server-ver15 "
| Environment variable | Description |
|-----|-----|
| **ACCEPT_EULA** | Set the **ACCEPT_EULA** variable to any value to confirm your acceptance of the [End-User Licensing Agreement](https://go.microsoft.com/fwlink/?LinkId=746388). Required setting for the SQL Server image. |
| **MSSQL_SA_PASSWORD** | Configure the SA user password.
The `SA_PASSWORD` environment variable is deprecated. Please use `MSSQL_SA_PASSWORD` instead. |
| **MSSQL_PID** | Set the SQL Server edition or product key. Possible values include: **Evaluation****Developer****Express****Web****Standard****Enterprise****A product key**If specifying a product key, it must be in the form of #####-#####-#####-#####-#####, where '#' is a number or a letter.|
| **MSSQL_LCID** | Sets the language ID to use for SQL Server. For example 1036 is French. |
| **MSSQL_COLLATION** | Sets the default collation for SQL Server. This overrides the default mapping of language ID (LCID) to collation. |
| **MSSQL_MEMORY_LIMIT_MB** | Sets the maximum amount of memory (in MB) that SQL Server can use. By default, it's 80% of the total physical memory. |
| **MSSQL_TCP_PORT** | Configure the TCP port that SQL Server listens on (default 1433). |
| **MSSQL_IP_ADDRESS** | Set the IP address. Currently, the IP address must be IPv4 style (0.0.0.0). |
| **MSSQL_BACKUP_DIR** | Set the Default backup directory location. |
| **MSSQL_DATA_DIR** | Change the directory where the new SQL Server database data files (.mdf) are created. |
| **MSSQL_LOG_DIR** | Change the directory where the new SQL Server database log (.ldf) files are created. |
| **MSSQL_DUMP_DIR** | Change the directory where SQL Server will deposit the memory dumps and other troubleshooting files by default. |
| **MSSQL_ENABLE_HADR** | Enable Availability Group. For example, '1' is enabled, and '0' is disabled |
| **MSSQL_AGENT_ENABLED** | Enable SQL Server Agent. For example, 'true' is enabled and 'false' is disabled. By default, agent is disabled. |
| **MSSQL_MASTER_DATA_FILE** | Sets the location of the master database data file. Must be named **master.mdf** until first run of SQL Server. |
| **MSSQL_MASTER_LOG_FILE** | Sets the location of the master database log file. Must be named **mastlog.ldf** until first run of SQL Server. |
| **MSSQL_ERROR_LOG_FILE** | Sets the location of the `errorlog` files. |
::: moniker-end
## Use with initial setup
This example runs `mssql-conf setup` with configured environment variables. The following environment variables are specified:
- **ACCEPT_EULA** accepts the end user license agreement.
- **MSSQL_PID** specifies the freely licensed Developer Edition of SQL Server for non-production use.
- **MSSQL_SA_PASSWORD** sets a strong password.
- **MSSQL_TCP_PORT** sets the TCP port that SQL Server listens on to 1234.
```bash
sudo ACCEPT_EULA='Y' MSSQL_PID='Developer' MSSQL_SA_PASSWORD='' MSSQL_TCP_PORT=1234 /opt/mssql/bin/mssql-conf setup
```
## Use with Docker
This example docker command uses the following environment variables to create a new SQL Server container:
- **ACCEPT_EULA** accepts the end user license agreement.
- **MSSQL_PID** specifies the freely licensed Developer Edition of SQL Server for non-production use.
- **MSSQL_SA_PASSWORD** sets a strong password.
- **MSSQL_TCP_PORT** sets the TCP port that SQL Server listens on to 1234. This means that instead of mapping port 1433 (default) to a host port, the custom TCP port must be mapped with the `-p 1234:1234` command in this example.
::: moniker range="= sql-server-linux-2017 || = sql-server-2017"
If you're running Docker on Linux, use the following syntax with single quotes:
```bash
docker run -e ACCEPT_EULA=Y -e MSSQL_PID='Developer' -e MSSQL_SA_PASSWORD='' -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d mcr.microsoft.com/mssql/server:2017-latest
```
If you're running Docker on Windows, use the following syntax with double quotes:
```bash
docker run -e ACCEPT_EULA=Y -e MSSQL_PID="Developer" -e MSSQL_SA_PASSWORD="" -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d mcr.microsoft.com/mssql/server:2017-latest
```
> [!NOTE]
> The process for running production editions in containers is slightly different. For more information, see [Run production container images](./sql-server-linux-docker-container-deployment.md#production).
::: moniker-end
::: moniker range=">= sql-server-linux-ver15 || >= sql-server-ver15 "
If you're running Docker on Linux/macOS, use the following syntax with single quotes:
```bash
docker run -e ACCEPT_EULA=Y -e MSSQL_PID='Developer' -e MSSQL_SA_PASSWORD='' -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
```
If you're running Docker on Windows, use the following syntax with double quotes:
```bash
docker run -e ACCEPT_EULA=Y -e MSSQL_PID="Developer" -e MSSQL_SA_PASSWORD="" -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
```
::: moniker-end
## Next steps
For other SQL Server settings not listed here, see [Configure SQL Server on Linux with the mssql-conf tool](sql-server-linux-configure-mssql-conf.md).
For more information on how to install and run SQL Server on Linux, see [Install SQL Server on Linux](sql-server-linux-setup.md).