22 октября 2026 г. · by Alex M.
MySQL 8 — самая распространённая реляционная СУБД в мире, на которой работает большинство современных веб-приложений: WordPress, Magento, Laravel, собственные проекты на Python или PHP. Если у вас есть VPS SSD или VPS NVMe и вы хотите запускать базы данных быстро и безопасно, это руководство покажет вам всё необходимое: установку, защиту, настройку производительности, управление пользователями и автоматическое резервное копирование.
MySQL 8 принёс значительные улучшения по сравнению с версией 5.7:
caching_sha2_password по умолчанию.На VPS с выделенными ресурсами MySQL 8 лучше использует доступные аппаратные ресурсы по сравнению со старыми версиями.
Перед началом убедитесь, что у вас есть:
sudo.Если у вас ещё нет сервера, выберите подходящий тариф VPS SSD от CLIQHOST.
Всегда начинайте с актуальной системы:
sudo apt update && sudo apt upgrade -y
Эта команда обновляет список пакетов и устанавливает последние патчи безопасности.
На 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:
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
MySQL поставляется с интерактивным скриптом безопасности, который необходимо запустить:
sudo mysql_secure_installation
Скрипт задаст следующие вопросы:
Y) и выбрать уровень STRONG (2) для производственных паролей.Y (удалить анонимных пользователей).Y (root не должен подключаться удалённо).Y (удалить тестовую базу данных).Y.Эти настройки устраняют наиболее распространённые векторы атак на MySQL.
На Ubuntu 22.04 пользователь root MySQL использует аутентификацию через сокет:
sudo mysql
Или, если вы установили пароль:
mysql -u root -p
После входа вы увидите приглашение mysql>.
Никогда не запускайте приложения под пользователем 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-адресами.
Основной файл конфигурации: /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 можно выделить больше памяти буферному пулу, чтобы в полной мере использовать скорость дисков.
По умолчанию 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-сред.
Создайте скрипт резервного копирования:
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
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 — Perl-скрипт, который анализирует конфигурацию и даёт конкретные рекомендации:
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
perl mysqltuner.pl --user root --pass ваш_пароль
Вывод покажет, какие параметры стоит скорректировать с учётом реальной нагрузки.
Если вы мигрируете с версии 5.7, ключевые шаги:
Полный бэкап перед любыми действиями:
mysqldump -u root -p --all-databases > backup-pre-upgrade.sql
Проверьте совместимость:
mysqlcheck -u root -p --all-databases --check-upgrade
Обновите пакеты и запустите:
sudo mysql_upgrade -u root -p
Протестируйте приложения — убедитесь, что caching_sha2_password совместим с вашими драйверами. При необходимости временно переключитесь:
ALTER USER 'myapp_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'пароль';
VALIDATE PASSWORD.GRANT ALL ON *.* пользователю приложения — используйте минимальные привилегии.MySQL 8 на VPS Linux — надёжное и производительное решение для любого серьёзного веб-приложения. Следуя шагам этого руководства, вы получите защищённую установку, оптимизированную под ресурсы вашего сервера, с настроенным автоматическим резервным копированием.
Если вы хотите сосредоточиться на разработке приложений, а не на администрировании сервера, команда CLIQHOST предлагает услуги по управляемому администрированию серверов, где мы берём на себя настройку, защиту и мониторинг MySQL.
Выберите VPS SSD или VPS NVMe от CLIQHOST для вашего проекта. Если у вас есть вопросы или нужна техническая помощь — свяжитесь с нами.
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."
"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."
"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."