// SSD VPS

Как установить и настроить MySQL 8 на VPS Linux: полное руководство — CLIQHOST

22 октября 2026 г. · by Alex M.

Как установить и настроить MySQL 8 на VPS Linux: полное руководство — CLIQHOST

MySQL 8 — самая распространённая реляционная СУБД в мире, на которой работает большинство современных веб-приложений: WordPress, Magento, Laravel, собственные проекты на Python или PHP. Если у вас есть VPS SSD или VPS NVMe и вы хотите запускать базы данных быстро и безопасно, это руководство покажет вам всё необходимое: установку, защиту, настройку производительности, управление пользователями и автоматическое резервное копирование.


Почему MySQL 8, а не более старые версии?

MySQL 8 принёс значительные улучшения по сравнению с версией 5.7:

  • Window Functions и CTE (Common Table Expressions) — более сложные и читаемые SQL-запросы.
  • Полная поддержка UTF-8mb4 — корректная обработка Unicode по умолчанию.
  • Roles — упрощённое управление правами доступа.
  • Улучшения InnoDB — лучшая производительность при высокой конкурентности.
  • Нативный JSON — расширенная поддержка JSON-данных прямо в таблицах.
  • Повышенная безопасность — аутентификация через caching_sha2_password по умолчанию.

На VPS с выделенными ресурсами MySQL 8 лучше использует доступные аппаратные ресурсы по сравнению со старыми версиями.


Предварительные требования

Перед началом убедитесь, что у вас есть:

  • VPS с Ubuntu 22.04 LTS или Debian 12 (команды аналогичны для обоих).
  • Доступ root или пользователь с привилегиями sudo.
  • Минимум 1 ГБ ОЗУ (рекомендуется 2+ ГБ для производственной среды).
  • Рабочее SSH-соединение.

Если у вас ещё нет сервера, выберите подходящий тариф VPS SSD от CLIQHOST.


Шаг 1: Обновление системы

Всегда начинайте с актуальной системы:

sudo apt update && sudo apt upgrade -y

Эта команда обновляет список пакетов и устанавливает последние патчи безопасности.


Шаг 2: Установка MySQL 8

На Ubuntu 22.04 MySQL 8 доступен прямо из официального репозитория:

sudo apt install mysql-server -y

Проверьте установленную версию:

mysql --version
# mysql  Ver 8.0.x Distrib 8.0.x, for Linux (x86_64)

Запустите и включите службу MySQL при загрузке:

sudo systemctl start mysql
sudo systemctl enable mysql

Проверьте статус:

sudo systemctl status mysql

Вы должны увидеть active (running) зелёным цветом.

Установка из официального репозитория MySQL (опционально)

Если вам нужна самая последняя версия напрямую от MySQL:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
sudo apt update
sudo apt install mysql-server -y

Шаг 3: Защита установки MySQL

MySQL поставляется с интерактивным скриптом безопасности, который необходимо запустить:

sudo mysql_secure_installation

Скрипт задаст следующие вопросы:

  1. VALIDATE PASSWORD COMPONENT — рекомендуем активировать (Y) и выбрать уровень STRONG (2) для производственных паролей.
  2. Пароль root — установите надёжный пароль и сохраните его в надёжном месте.
  3. Remove anonymous users — нажмите Y (удалить анонимных пользователей).
  4. Disallow root login remotely — нажмите Y (root не должен подключаться удалённо).
  5. Remove test database — нажмите Y (удалить тестовую базу данных).
  6. Reload privilege tables — нажмите Y.

Эти настройки устраняют наиболее распространённые векторы атак на MySQL.


Шаг 4: Подключение к MySQL под root

На Ubuntu 22.04 пользователь root MySQL использует аутентификацию через сокет:

sudo mysql

Или, если вы установили пароль:

mysql -u root -p

После входа вы увидите приглашение mysql>.


Шаг 5: Создание баз данных и пользователей

Никогда не запускайте приложения под пользователем root. Создавайте выделенных пользователей с минимальными правами:

-- Создать новую базу данных
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Создать нового пользователя
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'НадёжныйПароль!2025';

-- Предоставить права только на конкретную базу данных
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';

-- Применить изменения
FLUSH PRIVILEGES;

Проверить существующих пользователей:

SELECT user, host FROM mysql.user;

Создание пользователя с удалённым доступом (при необходимости)

Если приложение работает на другом сервере:

CREATE USER 'myapp_user'@'192.168.1.100' IDENTIFIED BY 'НадёжныйПароль!2025';
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'192.168.1.100';
FLUSH PRIVILEGES;

Важно: удалённый доступ должен быть ограничен строго известными IP-адресами.


Шаг 6: Настройка MySQL для максимальной производительности

Основной файл конфигурации: /etc/mysql/mysql.conf.d/mysqld.cnf. Откройте его:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Добавьте или измените следующие параметры в секции [mysqld]:

[mysqld]
# Буфер InnoDB (50-70% от доступной оперативной памяти)
innodb_buffer_pool_size = 512M

# Количество экземпляров буферного пула (1 на каждый ГБ пула)
innodb_buffer_pool_instances = 1

# Размер файла лога InnoDB
innodb_log_file_size = 128M

# Максимальное количество одновременных подключений
max_connections = 150

# Тайм-ауты
wait_timeout = 300
interactive_timeout = 300

# Кэш потоков
thread_cache_size = 16

# Кэш таблиц
table_open_cache = 2000

# Буфер сортировки (на поток)
sort_buffer_size = 2M

# Лог медленных запросов
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

# Кодировка по умолчанию
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

После изменений перезапустите MySQL:

sudo systemctl restart mysql

Рекомендации по innodb_buffer_pool_size

ОЗУ VPS Рекомендуемый Buffer Pool
1 ГБ 512 МБ
2 ГБ 1 ГБ
4 ГБ 2.5 ГБ
8 ГБ 5 ГБ

На высокопроизводительном VPS NVMe можно выделить больше памяти буферному пулу, чтобы в полной мере использовать скорость дисков.


Шаг 7: Сетевая безопасность MySQL

По умолчанию MySQL слушает на 127.0.0.1 (localhost). Проверьте:

sudo ss -tlnp | grep mysql
# LISTEN 0 151 127.0.0.1:3306 0.0.0.0:*

Если удалённый доступ не нужен, оставьте bind-address = 127.0.0.1 — это самая безопасная настройка.

Если нужен удалённый доступ и у вас активен UFW, разрешите подключение только с конкретного IP:

sudo ufw allow from 203.0.113.50 to any port 3306

Никогда не открывайте порт 3306 для всех (0.0.0.0). Наши услуги по администрированию серверов включают настройку и защиту MySQL для production-сред.


Шаг 8: Автоматическое резервное копирование с mysqldump

Создайте скрипт резервного копирования:

sudo nano /usr/local/bin/mysql-backup.sh

Содержимое скрипта:

#!/bin/bash
DATE=$(date +%Y-%m-%d_%H-%M)
BACKUP_DIR="/var/backups/mysql"
MYSQL_USER="root"
MYSQL_PASS="ваш_пароль_root"

mkdir -p $BACKUP_DIR

# Резервная копия всех баз данных
mysqldump -u $MYSQL_USER -p$MYSQL_PASS --all-databases --single-transaction \
  --quick --lock-tables=false | gzip > $BACKUP_DIR/all-databases-$DATE.sql.gz

# Удалить резервные копии старше 7 дней
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete

echo "Резервная копия создана: $BACKUP_DIR/all-databases-$DATE.sql.gz"

Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/mysql-backup.sh

Добавьте cron-задание для ежедневного резервного копирования в 02:00:

sudo crontab -e
0 2 * * * /usr/local/bin/mysql-backup.sh >> /var/log/mysql-backup.log 2>&1

Восстановление из резервной копии

gunzip < /var/backups/mysql/all-databases-2025-01-15_02-00.sql.gz | mysql -u root -p

Шаг 9: Мониторинг MySQL

Проверка статуса в реальном времени

SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Slow_queries';
SHOW GLOBAL STATUS LIKE 'Questions';
SHOW PROCESSLIST;

Проверка активных переменных конфигурации

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';

Установка MySQLTuner (рекомендуется)

MySQLTuner — Perl-скрипт, который анализирует конфигурацию и даёт конкретные рекомендации:

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
perl mysqltuner.pl --user root --pass ваш_пароль

Вывод покажет, какие параметры стоит скорректировать с учётом реальной нагрузки.


Шаг 10: Обновление с MySQL 5.7 до MySQL 8

Если вы мигрируете с версии 5.7, ключевые шаги:

  1. Полный бэкап перед любыми действиями:

    mysqldump -u root -p --all-databases > backup-pre-upgrade.sql
    
  2. Проверьте совместимость:

    mysqlcheck -u root -p --all-databases --check-upgrade
    
  3. Обновите пакеты и запустите:

    sudo mysql_upgrade -u root -p
    
  4. Протестируйте приложения — убедитесь, что caching_sha2_password совместим с вашими драйверами. При необходимости временно переключитесь:

    ALTER USER 'myapp_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'пароль';
    

Типичные ошибки, которых стоит избегать

  • ❌ Не оставляйте root с удалённым доступом — это самый распространённый вектор атаки.
  • ❌ Не используйте слабые пароли — MySQL 8 отклоняет их при активном VALIDATE PASSWORD.
  • ❌ Не игнорируйте лог медленных запросов — медленные запросы являются главной причиной тормозов приложений.
  • ❌ Не пропускайте резервное копирование — сервер без бэкапа не является production-сервером.
  • ❌ Не назначайте GRANT ALL ON *.* пользователю приложения — используйте минимальные привилегии.

Заключение

MySQL 8 на VPS Linux — надёжное и производительное решение для любого серьёзного веб-приложения. Следуя шагам этого руководства, вы получите защищённую установку, оптимизированную под ресурсы вашего сервера, с настроенным автоматическим резервным копированием.

Если вы хотите сосредоточиться на разработке приложений, а не на администрировании сервера, команда CLIQHOST предлагает услуги по управляемому администрированию серверов, где мы берём на себя настройку, защиту и мониторинг MySQL.

Выберите VPS SSD или VPS NVMe от CLIQHOST для вашего проекта. Если у вас есть вопросы или нужна техническая помощь — свяжитесь с нами.

SHARE
// what clients say

What Our Clients Say

Real reviews from customers who trust CLIQHOST for performance, reliability and expert technical support.

★★★★★

"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău