Безопасность MySQL на VPS: защита от взлома

Безопасность · 19.04.2026
Безопасность MySQL на VPS: защита от взлома

MySQL с настройками по умолчанию небезопасен. Открытый порт 3306, root без пароля, анонимные пользователи — всё это ворота для злоумышленников. Выполните эти шаги сразу после установки.

Базовая защита: mysql_secure_installation

sudo mysql_secure_installation

# Ответьте на вопросы:
# Set root password? YES → придумайте сложный пароль
# Remove anonymous users? YES
# Disallow root login remotely? YES
# Remove test database? YES
# Reload privilege tables? YES

Запретить прослушивание на внешнем интерфейсе

# /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
bind-address = 127.0.0.1   # Только localhost
# или для IPv6:
bind-address = ::1

sudo systemctl restart mysql
✅ После этой настройки к MySQL нельзя подключиться снаружи даже зная пароль — только с localhost или через SSH-туннель.

Создавать отдельного пользователя для каждого приложения

-- Создать пользователя только для одной БД
CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'StrongPassword123!';
CREATE DATABASE myapp_db;
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp'@'localhost';
FLUSH PRIVILEGES;

-- Никогда не давать GRANT OPTION приложениям:
-- GRANT ALL PRIVILEGES ON *.* TO ... -- ЗАПРЕЩЕНО!

SSH-туннель вместо открытого порта

# Подключиться к MySQL через SSH-туннель (без открытия 3306)
ssh -L 3306:127.0.0.1:3306 user@your-vps-ip -N -f

# Теперь можно подключаться локально:
mysql -u myapp -p -h 127.0.0.1 -P 3306

Мониторинг подозрительной активности

# Включить general log (кратковременно для диагностики!)
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/var/log/mysql/general.log';

# Найти медленные запросы
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

# Просмотр текущих подключений
SHOW PROCESSLIST;
⚠️ Не держите general_log включённым постоянно — он записывает КАЖДЫЙ запрос и быстро заполняет диск.
Меры защитыПриоритет
mysql_secure_installationКритический
bind-address = 127.0.0.1Критический
Отдельные пользователи для БДВысокий
SSH-туннельВысокий
Регулярный бэкапСредний
← Назад в базу знаний Задать вопрос поддержке