How To Install Microsoft SQL Server On Ubuntu Linux

In December 2016 Microsoft made their SQL Server database available in Linux. Here we’ll cover how to install and perform basic setup of MSSQL in the Ubuntu distribution of Linux.

Install MSSQL In Ubuntu 16.10

First we’ll set up the repository file, Microsoft provide a copy of this for Ubuntu here: https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list

We’ll use the wget command to copy this file to the /etc/apt/sources.list.d directory so that we can use it using apt-get. After this we run ‘apt-get update’ in order to sync the package index files with the new source that we’ve just added.

root@ubuntu:~# wget https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list -O /etc/apt/sources.list.d/mssql-server.list
root@ubuntu:~# apt-get update

At the time of writing, the 16.10 directory at https://packages.microsoft.com/ubuntu/16.10/mssql-server/ was empty, so I have instead used the 16.04 files here which seems to have worked just fine.

Now that the repository file is in place, installation is as simple as running the following command. At the time of writing the total size of the package and all dependencies was a 747mb download.

root@ubuntu:~# apt-get install mssql-server -y
...
+-------------------------------------------------------------------+
| Please run /opt/mssql/bin/sqlservr-setup to complete the setup of |
|                  Microsoft(R) SQL Server(R).                      |
+-------------------------------------------------------------------+

Once the installation has completed, we are advised to run the /opt/mssql/bin/sqlservr-setup bash script to complete the setup process.

During my first installation attempt, I got the following error as my virtual machine was only running with 2GB of memory, so be sure that you have enough memory before proceeding.

sqlservr: This program requires a machine with at least 3250 megabytes of memory.
Microsoft(R) SQL Server(R) setup failed with error code 1.

You’ll be able to proceed once you have adequate memory available.

root@ubuntu:~# /opt/mssql/bin/sqlservr-setup
Microsoft(R) SQL Server(R) Setup

You can abort setup at anytime by pressing Ctrl-C. Start this program
with the --help option for information about running it in unattended
mode.

The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746388 and found
in /usr/share/doc/mssql-server/LICENSE.TXT.

Do you accept the license terms? If so, please type "YES": YES

Please enter a password for the system administrator (SA) account:
Please confirm the password for the system administrator (SA) account:

Setting system administrator (SA) account password...

Do you wish to start the SQL Server service now? [y/n]: y
Do you wish to enable SQL Server to start on boot? [y/n]: y
Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server.service â /lib/systemd/system/mssql-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server-telemetry.service â /lib/systemd/system/mssql-server-telemetry.service.

Setup completed successfully.

That’s it, Microsoft SQL Server is now running successfully and listening for traffic on TCP port 1434.

root@ubuntu:~# systemctl status mssql-server
â mssql-server.service - Microsoft(R) SQL Server(R) Database Engine
   Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2016-12-30 22:55:23 AEDT; 33s ago
 Main PID: 4164 (sqlservr)
   CGroup: /system.slice/mssql-server.service
           ââ4164 /opt/mssql/bin/sqlservr
           ââ4201 /opt/mssql/bin/sqlservr

root@ubuntu:~# netstat -antp | grep 1434
tcp        0      0 127.0.0.1:1434          0.0.0.0:*               LISTEN      4201/sqlservr

Connecting To MSSQL

In order to actually connect to the server from Linux we need to install the mssql-tools package, which comes from a different repository than the one that we just set up. It can be found here: https://packages.microsoft.com/config/ubuntu/16.04/prod.list

First we’ll download a copy of the prod.list file and place it into the /etc/apt/sources.list.d directory.

root@ubuntu:~# wget https://packages.microsoft.com/config/ubuntu/16.04/prod.list -O /etc/apt/sources.list.d/pord.list
root@ubuntu:~# apt-get update

We can now proceed with installing the mssql-tools package, as shown below.

root@ubuntu:~# apt-get install mssql-tools -y

Once this is installed we can use the sqlcmd command to interact with the database. To see how to run sqlcmd, simply run it with the -? option for help.

Unfortunately it appears that when you specify the -P option for the password, the password must be provided in the command line with no option of being prompted for it later. Keep in mind that your password will be stored in your bash history running it this way.

root@ubuntu:~# sqlcmd -U SA -P password
1> create database test;
2> go
1> use test;
2> go
Changed database context to 'test'.
1> create table websites(domain varchar(255));
2> go
1> insert into websites (domain)
2> values ('rootusers.com');
3> go

(1 rows affected)
1> select domain
2> from websites;
3> go
domain
rootusers.com
(1 rows affected)

In this example we create a test database with a table named websites and a column for domain names. We then insert a domain name and pull it back out with select, confirming both that we are able to connect and that basic SQL queries appear to be working as expected.

Summary

Microsoft’s SQL Server is now available for installation on Linux. Personally I don’t think I’ll ever use this over other alternatives such as MariaDB or PostgreSQL, so hopefully someone somewhere actually finds this information useful!

  1. memory means ram or hard drive in this scenarios !

  2. Should I user ubuntu 16.04.2 server or desktop for SQL Server installation? Thanks

    • Depends what it’s for, if it’s an SQL server that will be running in production I’d definitely use the server install, otherwise if you’re just playing with it, testing or learning then either are fine and it shouldn’t really matter.

  3. after installing you should export mssql-tools by running : echo ‘export PATH=”$PATH:/opt/mssql-tools/bin”‘ >> ~/.bashrc
    so you can run sqlcmd

  4. /opt/mssql/bin/sqlservr-setup: No existe el archivo o el directorio

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>