Установка и базовое использование MSSQL Server на Debian 11
Важно: в руководстве используется стандартный TCP-порт 1433 для MSSQL. Убедитесь, что порт открыт только там, где это необходимо.
Основная цель
Установить и настроить MSSQL Server 2019 на сервере Debian 11, установить и настроить UFW и mssql-tools, научиться подключаться и выполнять базовые операции с базой данных (создание логина, базы, таблицы и CRUD-запросы).
Варианты формулировки задачи
- Установка MSSQL на Debian 11
- MSSQL Server 2019 на Debian (пошагово)
- Как настроить sqlcmd и mssql-tools в Debian 11
- Открытие порта 1433 и базовая работа с SQL Server на Linux
TL;DR
Установите зависимости, добавьте ключ Microsoft и репозиторий (используется пакет Ubuntu focal), затем установите mssql-server и выполните sudo /opt/mssql/bin/mssql-conf setup для настройки. Откройте порт 1433 в UFW, установите mssql-tools и добавьте /opt/mssql-tools/bin в PATH. Подключайтесь через sqlcmd и выполняйте SQL-запросы для управления базами и пользователями.
Краткое содержание
- Требования
- Настройка репозитория
- Установка MSSQL Server 2019
- Настройка UFW
- Установка MSSQL Tools (sqlcmd, bcp)
- Подключение и простые операции CRUD
- Рекомендации по безопасности
- Отладка и распространённые ошибки
- Альтернативы и сценарии применения
- Чеклисты для ролей
- Краткий глоссарий
Требования
- Сервер с Debian 11, минимум 4 ГБ оперативной памяти. Пример в руководстве: имя хоста mssql-deb, IP 192.168.5.10.
- Непривилегированный пользователь с sudo-привилегиями.
- Доступ в интернет для загрузки пакетов и ключей.
Факты и основные числа
- Минимальная оперативная память: 4 ГБ (рекомендация производителя для базового использования).
- Стандартный порт MSSQL Server: 1433/tcp.
- Пакет: mssql-server (MSSQL Server 2019 Express по выбору в установщике).
Настройка репозитория
- Авторизуйтесь на сервере и получите root-права:
sudo su
sudo apt update- Установите зависимости:
sudo apt install gnupg2 apt-transport-https wget curl
- Добавьте GPG-ключ Microsoft и сохраните его в /usr/share/keyrings:
wget -q -O- https://packages.microsoft.com/keys/microsoft.asc | \
gpg --dearmor | sudo tee /usr/share/keyrings/microsoft.gpg > /dev/null 2>&1- Добавьте репозиторий MSSQL Server (используем репозиторий для Ubuntu 20.04 focal):
echo "deb [signed-by=/usr/share/keyrings/microsoft.gpg arch=amd64,armhf,arm64] https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019 focal main" | \
sudo tee /etc/apt/sources.list.d/mssql-server-2019.list- Обновите индекс пакетов:
sudo apt updateПосле этого репозиторий MSSQL Server доступен для установки на Debian 11.
Установка MSSQL Server 2019
- Установите пакет mssql-server:
sudo apt install mssql-server
- После установки запустите мастер настройки:
sudo /opt/mssql/bin/mssql-conf setupВ процессе вас попросят выбрать издания (например, Express), принять лицензионное соглашение и задать пароль для SA или основного логина.
- Проверьте статус службы:
sudo systemctl is-enabled mssql-server
sudo systemctl status mssql-serverЕсли enabled — служба будет запускаться при старте системы; статус active (running) указывает на успешный запуск.

Настройка UFW (фаервол)
- Установите ufw:
sudo apt install ufw
- Разрешите OpenSSH и порт MSSQL 1433/tcp:
sudo ufw allow OpenSSH
sudo ufw allow 1433/tcp- Включите и проверьте ufw:
sudo ufw enable
sudo ufw statusВы должны увидеть статус active и правила для OpenSSH и 1433/tcp.

Заметка: по умолчанию MSSQL будет слушать на 1433. Если вы изменяете порт для безопасности, не забудьте обновить правило UFW.
Установка MSSQL Tools (sqlcmd и bcp)
- Добавьте репозиторий prod для mssql-tools:
echo "deb [signed-by=/usr/share/keyrings/microsoft.gpg arch=amd64,armhf,arm64] https://packages.microsoft.com/ubuntu/20.04/prod focal main" | \
sudo tee /etc/apt/sources.list.d/prod.list- Обновите индекс и установите инструменты:
sudo apt update
sudo apt install mssql-tools unixodbc-devПри установке потребуется принять лицензионные условия.

- Убедитесь, что бинарники доступны, и добавьте их в PATH для постоянного доступа:
ls /opt/mssql-tools/bin
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
which sqlcmd
which bcpПосле этого команды sqlcmd и bcp будут доступны в вашей сессии без указания полного пути.

Подключение к MSSQL Server
Подключитесь с помощью sqlcmd (будет запрошен пароль):
sqlcmd -S localhost -U SA -pВ SQL-консоли выполните проверку версии:
select @@version
goОжидаемый вывод содержит указание на MSSQL Server 2019 Express (в случае выбора Express).

Список баз данных по умолчанию:
select name from sys.databases;
goВы увидите master, tempdb, model, msdb.

Базовые операции (CRUD) через sqlcmd
- Создаём логин Bob (измените пароль на надёжный):
CREATE LOGIN Bob WITH PASSWORD='p4ssw0rdBob';
GO- Создаём базу TestDB:
CREATE DATABASE TestDB
GO
- Переходим в базу и создаём таблицу users:
Use TestDB
GO
CREATE TABLE users (
id INT PRIMARY KEY IDENTITY (1, 1),
first_name VARCHAR (50) NOT NULL,
last_name varchar(50) NOT NULL,
email varchar(50),
last_login DATE NOT NULL
);
GO
- Создаём пользователя базы и даём права на таблицу users:
CREATE USER Bob FOR LOGIN Bob;
GO
GRANT SELECT, INSERT, UPDATE, DELETE ON users TO Bob;
GO- Выйдите из sqlcmd:
quit
- Подключитесь как Bob к TestDB и вставьте строку:
sqlcmd -S localhost -U Bob -d TestDB -p
INSERT INTO users (first_name, last_name, email, last_login) VALUES ('Bob', 'Marlyn', '[email protected]', '2022-09-01');
GO
SELECT * FROM users
GOОбратите внимание: для даты можно использовать формат YYYY-MM-DD для избежания региональных неоднозначностей.

Рекомендации по безопасности и настройке производительности
- Пароли: используйте сложные пароли и регулярно их меняйте; исключите очевидные значения.
- SA: по возможности отключайте прямой вход SA и используйте для администрирования отдельные высокопривилегированные группы/аккаунты.
- Сеть: ограничьте доступ к порту 1433 через UFW и по IP; не открывайте порт MSSQL в публичный интернет.
- Шифрование: настройте шифрование TLS для клиентских подключений, если база доступна по сети.
- Резервное копирование: планируйте регулярные бэкапы (полные/диффы/лог транзакций) вне сервера.
- Ресурсы: для рабочих нагрузок оценивайте память и конфигурацию процессоров; для крупных нагрузок используйте отдельные диски/RAID.
Краткая команда или действие для смены порта описана в документации Microsoft (mssql-conf) — проверяйте актуальные источники при изменении сетевых настроек.
Отладка и распространённые ошибки
MSSQL не запускается
- Проверьте логи systemd: sudo journalctl -u mssql-server -b
- Убедитесь, что порт 1433 не занят другой службой (sudo ss -tulnp | grep 1433).
- Проверьте наличие достаточного объёма памяти и места на диске.
Не удаётся подключиться по сети
- Проверьте UFW: sudo ufw status
- Проверьте, слушает ли MSSQL нужный интерфейс: ss -tulnp | grep sqlservr
- Убедитесь, что нет промежуточных сетевых фильтров (облако, hardware firewall).
Ошибки аутентификации
- Проверьте, включена ли смешанная аутентификация (SQL + Windows). На Linux требуется настроить логины SQL.
- Убедитесь в правильности ввода пароля и кодировки.
sqlcmd сообщает, что команда не найдена
- Убедитесь, что /opt/mssql-tools/bin добавлен в PATH и вы выполнили source ~/.bashrc.
Когда этот подход не подходит
- Если вы хотите разворачивать MSSQL в контейнере или оркестраторе — предпочтительнее использовать официальные контейнерные образы Microsoft и практики DevOps.
- Для небольших встраиваемых решений или lightweight проектов может быть экономичнее использовать PostgreSQL или MariaDB в зависимости от требований.
- В средах с требованиями только Windows-авторизации лучше использовать Windows Server с интеграцией Active Directory.
Альтернативные подходы
- Контейнеризация: официальный образ mcr.microsoft.com/mssql/server для Docker/Kubernetes.
- Использование управляемого сервиса BaaS (Azure SQL, Amazon RDS for SQL Server) вместо собственного сервера.
- Переход на OSS-аналоги (PostgreSQL) при отсутствии требований к T-SQL / специфичным фичам MSSQL.
Чеклисты для ролей
Администратор (SysAdmin)
- Проверить системные требования и ресурсы
- Добавить GPG-ключ и репозитории
- Установить mssql-server и выполнить mssql-conf setup
- Настроить UFW, оставить доступ только нужным IP
- Настроить резервное копирование и мониторинг
Разработчик
- Установить mssql-tools
- Проверить подключение через sqlcmd
- Создать тестовую БД и таблицу
- Написать и прогнать тесты CRUD
Операции и безопасность
- Отключить ненужные сетевые интерфейсы
- Пересмотреть права пользователей и роли
- Настроить TLS и аудит подключений
Мини-методология внедрения (быстрый SOP)
- Подготовка: snapshot/резервная точка восстановления ОС.
- Установка зависимостей и добавление репозиториев.
- Установка mssql-server и первичная настройка через mssql-conf.
- Установка и проверка mssql-tools.
- Настройка сети и бэкапов.
- Тестирование с контрольным сценарием CRUD и нагрузочным тестом для подтверждения SLI.
Критерии приёмки
- Служба mssql-server должна быть active (running).
- sqlcmd подключается под SA и под созданным пользователем.
- Порт 1433 доступен из разрешённых сетей и закрыт из публичного интернета.
- Выполнены тестовые CRUD-операции без ошибок.
Краткий глоссарий
- MSSQL Server: СУБД от Microsoft.
- mssql-conf: инструмент конфигурации MSSQL на Linux.
- sqlcmd: консольный клиент Microsoft для выполнения T-SQL-команд.
- bcp: утилита для пакетного импорта/экспорта данных.
- UFW: простой интерфейс для управления iptables на Ubuntu/Debian.
FAQ
Q: Почему используется репозиторий Ubuntu на Debian?
A: Microsoft распространяет пакеты для Ubuntu 20.04 (focal). На практике пакеты совместимы с Debian 11, поэтому в этом руководстве используется репозиторий focal. Проверяйте совместимость пакетов перед прод-развёртыванием.
Q: Как сменить порт по умолчанию?
A: Порт настраивается в конфигурации MSSQL через mssql-conf или конфигурационные файлы; после изменения обновите правила фаервола.
Q: Нужно ли открывать 1433 на публичный интернет?
A: Нет. Открывайте порт только для доверенных сетей или используйте VPN/прокси.
Заключение
Вы установили MSSQL Server 2019 на Debian 11, настроили UFW, установили mssql-tools и провели базовые операции создания логинов, базы данных и таблицы с дальнейшими CRUD-операциями через sqlcmd. Дополнительно представлены рекомендации по безопасности, чеклисты для ролей, методология внедрения и набор шагов для устранения типичных проблем.
Если вы планируете использовать MSSQL в продакшн-среде, обязательно настройте резервное копирование, мониторинг, TLS и строгую политику управления доступом.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента