Configure SQL Server settings with environment variables on Linux

THIS TOPIC APPLIES TO: noSQL Server on WindowsyesSQL Server on LinuxnoAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

You can use several different environment variables to configure SQL Server 2017 on Linux. These variables are used in two scenarios:

Tip

If you need to configure SQL Server after these setup scenarios, see Configure SQL Server on Linux with the mssql-conf tool.

Environment variables

Environment variable Description
ACCEPT_EULA Accept the SQL Server license agreement when set to any value (for example, 'Y').
MSSQL_SA_PASSWORD Configure the SA user password.
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 is 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 Groups.

Example: 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.
  • MSSSQL_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.
sudo ACCEPT_EULA='Y' MSSQL_PID='Developer' MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>' MSSQL_TCP_PORT=1234 /opt/mssql/bin/mssql-conf setup

Example: Docker

This example docker command uses the following environment variables to create a new SQL Server 2017 container:

  • ACCEPT_EULA accepts the end user license agreement.
  • MSSSQL_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.

If you are running Docker on Linux/macOS, use the following syntax with single quotes:

docker run -e ACCEPT_EULA=Y -e MSSQL_PID='Developer' -e MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>' -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d microsoft/mssql-server-linux:2017-latest

If you are running Docker on Windows, use the following syntax with double quotes:

docker run -e ACCEPT_EULA=Y -e MSSQL_PID="Developer" -e MSSQL_SA_PASSWORD="<YourStrong!Passw0rd>" -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d microsoft/mssql-server-linux:2017-latest

Note

The process for running production editions in containers is slightly different. For more information, see Run production container images.

Next steps

For other SQL Server settings not listed here, see Configure SQL Server on Linux with the mssql-conf tool.

For more information on how to install and run SQL Server on Linux, see Install SQL Server on Linux.