How to Install and Use MS SQL Server on Linux

Earlier this year, Microsoft surprised the IT world with the announcement of their plans to bring MS SQL Server to Linux.

Under Satya Nadella’s leadership, the Redmond giant has made significant progress towards taking advantage of the areas where Linux dominates the industry (such as the technologies that power the cloud). The move to make SQL Server available in Linux is yet another indicative of this approach.

Whatever the company’s motivations behind this initiative, Linux system administrators are likely to need to learn how to install, maintain, and use MS SQL Server – specially considering that the preview version packages are already available for Red Hat Enterprise Linux 7 (includes CentOS 7 as well) and Ubuntu Server 16.04 64 bits (sorry – no 32-bit version available!).

The only “fancy” system requirement of the preview version is that the system where it is installed must have at least 3.25 GB of RAM.

Installing MS SQL Server on Linux

To begin, we’ll need to add two repositories to our software sources list.

On RHEL / CentOS:

1. Insert the following lines into /etc/yum.repos.d/sql-server.repo:

[packages-microsoft-com-mssql-server]
name=packages-microsoft-com-mssql-server
baseurl=https://packages.microsoft.com/rhel/7/mssql-server/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc

To install the MS SQL Server command-line tools, create /etc/yum.repos.d/msprod.repo with these contents:

[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc

2. Then install the packages using yum package manager, as usual:

# yum install -y mssql-server mssql-tools

When the installation is complete, you will be reminded to run the configuration script (/opt/mssql/bin/sqlservr-setup) to accept the license terms, set the password for the SA user, and start the service. Additionally, you can choose to enable it to start automatically on boot.

3. Open port 1433/tcp on your firewall in order to allow external clients to communicate with the database server:

If you’re using firewalld:

# firewall-cmd --add-port=1433/tcp --permanent
# firewall-cmd --reload

Otherwise (using iptables):

# iptables -A INPUT -p tcp --dport 1433 -j ACCEPT
# iptables-save > /etc/sysconfig/iptables

On Ubuntu Server, do:

1. In order for Ubuntu to trust the packages from the MS SQL Server repositories, import the GPG keys:

$ sudo sh -c "curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -"

2. Add the repositories to /etc/apt/sources.list.d/sql-server.list:

$ sudo sh -c "echo deb [arch=amd64] https://packages.microsoft.com/ubuntu/16.04/mssql-server xenial main > /etc/apt/sources.list.d/sql-server.list"
$ sudo sh -c "echo deb [arch=amd64] https://packages.microsoft.com/ubuntu/16.04/prod xenial main >> /etc/apt/sources.list.d/sql-server.list"

3. Resynchronize the package index files and update the core package and additional tools:

$ sudo apt-get update
$ sudo apt-get install mssql-server mssql-tools -y

4. Run the configuration script as in the previous case:

$ sudo /opt/mssql/bin/sqlservr-setup
SQL Server Setup on Linux

SQL Server Setup on Linux

5. Choose “Yes” when prompted to accept the license terms for MS SQL Tools:

Configuring MSSQL Tools on Linux

Configuring MSSQL Tools on Linux

Testing MS SQL Server on Linux

We will login to the server and create a database named Fabrics. The -P switch must be followed by the password you chose when you installed the package previously:

$ sqlcmd -S localhost -U SA -P 'YourPasswordHere'
CREATE DATABASE Fabrics
exit
Create MSSQL Database on Linux

Create MSSQL Database on Linux

If you’re using Linux, you can continue using the command-line as shown above. Otherwise, install SQL Server Management Studio Express if you’re on Windows.

Once done, enter the IP of the database server (192.168.0.200 in this case) and the login credentials (username=sa, password=YourPasswordHere):

Connect to MSSQL Server

Connect to MSSQL Server

Upon successful login, the Fabrics database should appear at the left hand side:

Confirm MSSQL Database

Confirm MSSQL Database

Next, click New Query to open a new query window where you’ll insert the contents of the Fabrics script from Codeproject.com, then click Execute.

If successful, you will see the script created 5 tables and the number of records in each:

Create a Sample SQL Database

Create a Sample SQL Database

To wrap up, run the following query to retrieve the first 5 records from the Clients table:

USE Fabrics
SELECT TOP 5 FirstName, LastName,
DateOfBirth FROM Client
GO

The results should be identical to the output in the following image:

Run MSSQL Database Queries on Linux

Run MSSQL Database Queries on Linux

Congratulations! You have successfully installed and tested MS SQL Server on Linux!

Summary

In this article we have explained how to install MS SQL Server on RHEL / CentOS and Ubuntu Server.

Due to the newfound closeness of Microsoft and Linux, Linux system administrators will need to be knowledgeable on MS SQL Server if they want to stay at the top of their game.

By mid 2017, the same SQL Server editions will be offered on Linux as today on Windows: Enterprise, Standard, Web, Express, and Developer. The last two are free but only the Express edition will be licensed for production use (but with resource limits).

As always, feel free to use the comment form below to drop us a note if you have any questions. We look forward to hearing from you!

Best Affordable Linux and WordPress Services For Your Business
Outsource Your Linux and WordPress Project and Get it Promptly Completed Remotely and Delivered Online.

If You Appreciate What We Do Here On TecMint, You Should Consider:

  1. Stay Connected to: Twitter | Facebook | Google Plus
  2. Subscribe to our email updates: Sign Up Now
  3. Get your own self-hosted blog with a Free Domain at ($3.45/month).
  4. Become a Supporter - Make a contribution via PayPal
  5. Support us by purchasing our premium books in PDF format.
  6. Support us by taking our online Linux courses

We are thankful for your never ending support.

Gabriel Cánepa

Gabriel Cánepa is a GNU/Linux sysadmin and web developer from Villa Mercedes, San Luis, Argentina. He works for a worldwide leading consumer product company and takes great pleasure in using FOSS tools to increase productivity in all areas of his daily work.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

41 Responses

  1. sandeep says:

    I have installed Oracle VM and Then installed Red Hat Linux 7 evaluation version from Red Hat Website.

    But after that how to copy the sql server 2017 installation files onto Linux machine. I have installed winscp to copy from Windows to Linux.

    But how do i connect to Linux using winscp.

    • Ravi Saive says:

      @Sandeep,

      In Winscp enter the IP address of Linux Server, Select SSH Server Port as “22” and enter user credentials to connect to remote Linux.

  2. vartaxe says:

    is the express version now available?

  3. Avtar Singh says:

    I am getting this error
    =====================================
    This program has encountered a fatal error and cannot continue running.
    The following diagnostic information is available:

    Reason: 0x00000001
    Signal: SIGILL – Illegal instruction (4)
    Stacktrace: 00005562a2bd48b9 00007fb90827d390
    Process: 8484 – sqlservr
    Thread: 8564 (application thread 0x1130)
    Instance Id: 52cd4f85-2293-40f8-ad20-ac08754bbd74
    Crash Id: c2813c22-5e0e-4701-acd9-b48a2694eb8c
    Build stamp: 94eba6a4633ca4c0df02f5ac93a5ec71d5e614105861a7140bd16aa838f6b2d7

    Capturing core dump and information…
    Attempting to capture a dump with paldumper
    Core dump and information are being compressed in the background. When complete,
    they can be found in the following location:
    /var/opt/mssql/log/core.sqlservr.05_25_2017_06_54_36.8484.tbz2
    ========================
    Amy pointer will be helpful

    • Gabriel A. Canepa says:

      At what point are you getting this error? What distribution are you using? Did you check the dump?

      • Avtar Singh says:

        This is the error while I trying to run the following command after installing the MySQL server:

        /opt/mssql/bin/mssql-conf setup
        =====
        mssql version is 14.0.600
        =====
        Distribution is ubuntu and centos.and how can i view gdmp file in ubuntu.
        
  4. Mark says:

    Hello Sir please help me i’m not getting it right, using linux mint 18 after the first 2 code when i try sudo /opt/mssql/bin/sqlservr-setup it gives me this sudo: /opt/mssql/bin/sqlservr-setup: command not found

    • Gabriel A. Cánepa says:

      I would advise you to make you’ve followed all of the installation steps. If so, make sure your Linux Mint 18 is based off Ubuntu 16.04 which is the version the SQL server repositories are configured for.

    • M Kinder says:

      had same problem, make sure there is a space between sqlservr and the dash.

  5. Ryan says:

    Hello, I can connect to my server using the CLI.

    However whenever I try to use mssql in php my login gets denied with the same login details.

    I’m on a Ubuntu server using Apache

  6. mehmet says:

    I’m trying to install SQL Server on Mint.
    when i run setup, I get the following error. any help would be highly appreciated.

    Failed to issue method call: No such interface ‘org.freedesktop.DBus.Properties’ on object at path /org/freedesktop/systemd1/unit/mssql_2dserver_2eservice

    • Gabriel A. Cánepa says:

      What Mint version are you using? In theory this should work in Linux Mint 18.1 and newer. Two constraints here are: 1) Does your Mint version use systemd?, and 2) Is it based on Ubuntu 16.04 LTS, which is the distribution the Microsoft repositories are available for?

  7. singaravelan says:

    Please put on a MS SQL licence registration process details

  8. Arvind says:

    Nice Article. Require once more step to make sqlcmd work.

    Before testing the mssql, make sure to run the following commands

    # ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd 
    # ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp
    

    After the above commands sqlcmd will work on terminal

  9. Tahiriah says:

    Can’t imagine MIcrosoft product and repository on my GNU system. But I will give a try in order to compare it with postgres or mariadb.

    Thanks for the article

  10. Krzysztof Rogacewicz says:

    Hello, great article. I installed MS SQL on Ubuntu server, everything works fine. I have one problem, How to activate this instance? I want run my production sql server on Linux, but when i restart a instance i got massage that this only 143 days to activate..

    I cant find information on websites how do this… To get help from Microsoft i must have subscription..
    Please help :-)

Leave a Reply to Krzysztof Rogacewicz Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.