--- 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: rwestMSFT ms.author: randolphwest ms.date: 05/02/2025 ms.service: sql ms.subservice: linux ms.topic: how-to ms.custom: - linux-related-content - build-2025 --- # Configure SQL Server settings with environment variables on Linux [!INCLUDE [SQL Server - Linux](../includes/applies-to-version/sql-linux.md)] You can use several different environment variables to configure [!INCLUDE [ssnoversion-md](../includes/ssnoversion-md.md)] on Linux. These variables are used in two scenarios: - To configure initial setup with the `mssql-conf setup` command. - To configure a new [SQL Server Linux container image](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 | 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` password.

The `SA_PASSWORD` environment variable is deprecated. Use `MSSQL_SA_PASSWORD` instead. | | `MSSQL_PID` | Set the SQL Server edition or product key. Possible values include:

`Evaluation`
`Developer`
`Express`
`Web`
`Standard`
`Enterprise` 1
`EnterpriseCore` 1
`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 deposits 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. For example, `/var/opt/mssql/log/errorlog`. | 1 The legacy `Enterprise` license represents Enterprise edition with Server + Client Access License (CAL) based licensing, and is limited to a maximum of 20 cores per SQL Server instance. `Enterprise` isn't available for new agreements. You should choose `EnterpriseCore` when you wish to deploy Enterprise edition. `EnterpriseCore` represents the core-based server licensing model with no core limits. For more information, see [Compute capacity limits by edition of SQL Server](../sql-server/compute-capacity-limits-by-edition-of-sql-server.md). ## 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. [!INCLUDE [password-complexity](includes/password-complexity.md)] - `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. [!INCLUDE [password-complexity](includes/password-complexity.md)] - `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, 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-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:2019-latest ``` ::: moniker-end ::: moniker range="=sql-server-linux-ver16 || =sql-server-ver16" 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:2022-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:2022-latest ``` ::: moniker-end ::: moniker range=">=sql-server-linux-ver17 || >=sql-server-ver17" 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:2025-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:2025-latest ``` ::: moniker-end > [!CAUTION] > [!INCLUDE [password-complexity](includes/password-complexity.md)] ## Related content - [Configure SQL Server on Linux with the mssql-conf tool](sql-server-linux-configure-mssql-conf.md) - [Installation guidance for SQL Server on Linux](sql-server-linux-setup.md) [!INCLUDE [contribute-to-content](../includes/paragraph-content/contribute-to-content.md)]