SQL Server runs on Linux starting with SQL Server 2017. This SQL Server is the same SQL Server database engine running on Microsoft Operating systems, with many similar features and services.
This guide will take you through the steps to install Microsoft SQL Server 2019 on CentOS 7 / Fedora 29/ Fedora 28. As of this writing, SQL Server 2019 9 is available in Preview mode, but I’ll update the article once it is available for general public.
Step 1: Install Microsoft SQL Server 2019 on CentOS 7 / Fedora 29/28
Microsoft SQL Server 2019 is available from Preview (2019) repository. Add the repository to your CentOS 7 / Fedora by running the following commands on your terminal.
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-preview.repo
This will download SQL Server 2019 repository to /etc/yum.repos.d/mssql-server.repo
Update your system cache:
sudo yum makecache # CentOS 7 sudo dnf makecache # Fedora
Then install SQL server 2019:
sudo yum install -y mssql-server
For Fedora, run:
sudo dnf install -y mssql-server
To get info about the installed package, run:
$ rpm -qi mssql-server Name : mssql-server Version : 15.0.1100.94 Release : 1 Architecture: x86_64 Install Date: Sat 17 Nov 2018 09:12:15 AM UTC Group : Unspecified Size : 1289243002 License : Commercial Signature : RSA/SHA256, Tue 06 Nov 2018 10:12:05 PM UTC, Key ID eb3e94adbe1229cf Source RPM : mssql-server-15.0.1100.94-1.src.rpm Build Date : Tue 06 Nov 2018 08:47:29 AM UTC Build Host : hls-cent3-prod-build-cent73-03 Relocations : (not relocatable) Summary : Microsoft SQL Server Relational Database Engine Description : The mssql-server package contains the Microsoft SQL Server Relational Database Engine.
Step 2: Initialize MS SQL Database Engine
After the package installation finishes, run mssql-conf setup and follow the prompts to set the SA password and choose your edition.
sudo /opt/mssql/bin/mssql-conf setup
1.
Select an edition you’d like to use
Choose an edition of SQL Server: 1) Evaluation (free, no production use rights, 180-day limit) 2) Developer (free, no production use rights) 3) Express (free) 4) Web (PAID) 5) Standard (PAID) 6) Enterprise (PAID) 7) Enterprise Core (PAID) 8) I bought a license through a retail sales channel and have a product key to enter.
For me. I’ll go with 2 – Developer (free, no production use rights).
2.
Accept the license terms
The license terms for this product can be found in /usr/share/doc/mssql-server or downloaded from: https://go.microsoft.com/fwlink/?LinkId=855862&clcid=0x409 The privacy statement can be viewed at: https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x409 Do you accept the license terms? [Yes/No]:Yes
3.
Set SQL Server system administrator password
Enter the SQL Server system administrator password: <Password> Confirm the SQL Server system administrator password:<Confirm Password> Configuring SQL Server... sqlservr: This program requires a machine with at least 2000 megabytes of memory. /opt/mssql/bin/sqlservr: This program requires a machine with at least 2000 megabytes of memory. Initial setup of Microsoft SQL Server failed. Please consult the ERRORLOG in /var/opt/mssql/log for more information.
Step 3: Start and enable mssql-server service
Start mssql-server service
sudo systemctl start mssql-server
Enable it to start on system boot
sudo systemctl enable mssql-server
Add /opt/mssql/bin/
to your $PATH variable
echo 'export PATH=$PATH:/opt/mssql/bin' | sudo tee /etc/profile.d/mssql.sh
Source the file to start using MS SQL executable binaries in your current shell session
source /etc/profile.d/mssql.sh
If you have an active Firewalld service, allow SQL Server ports for remote hosts to connect:
sudo firewall-cmd --add-port=1433/tcp --permanent sudo firewall-cmd --reload
Step 4: Test SQL Server
Connect to the SQL Server and verify it is working.
$ sqlcmd -S localhost -U SA
Authenticate with the password set in Step 2.
Show Database users:
1> select name from sysusers; 2> go
Create a test database:
CREATE DATABASE testDB SELECT Name from sys.Databases GO USE testDB CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT) INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154); GO SELECT * FROM Inventory LIMIT 1;
Show databases on the SQL Server.
1> select name,database_id from sys.databases; 2> go name database_id ------------- ----------- master 1 tempdb 2 model 3 msdb 4 testDB 5 (5 rows affected)
Drop a database:
1> drop database testDB; 2> go
For SQL Server 2017:
How to install MS SQL on Ubuntu 18.04 LTS