Перейти к содержимому
Не упустите специальную скидку 20% для новых клиентов! Промокод: KAVESNET20 Скопировано
MySQL

Управление БД MySQL / MariaDB: установка, пользователи, бэкапы

Установка MySQL/MariaDB на Linux VDS, создание пользователей и БД, dump/import, тюнинг производительности и безопасный удалённый доступ.

Команда KavesNET 9 октября 2025 г. 4 мин чтения
Управление MySQL MariaDB

WordPress, e-commerce, корпоративные приложения — у всех под капотом БД. MySQL и его форк MariaDB — самые распространённые в мире реляционные базы. В гиде — установка, управление пользователями/БД, бэкапы и частые проблемы производительности на Linux-VDS.

MySQL vs MariaDB — что выбрать?

  • MySQL: принадлежит Oracle, коммерческая + community
  • MariaDB: open-source форк MySQL, ~95% совместима, местами быстрее

Для большинства проектов взаимозаменяемы — что установлено в системе, то и подходит. WordPress поддерживает обе. Для новой установки рекомендуем MariaDB.

1. Установка

# Ubuntu/Debian
sudo apt update
sudo apt install mariadb-server -y

# AlmaLinux/RHEL
sudo dnf install mariadb-server -y
sudo systemctl enable --now mariadb

Статус:

sudo systemctl status mariadb

2. Безопасность (всегда первый шаг)

sudo mysql_secure_installation
  • Set root password: сильный
  • Remove anonymous users: Yes
  • Disallow root login remotely: Yes
  • Remove test database: Yes
  • Reload privilege tables: Yes

3. Подключение

sudo mysql -u root -p

Выход: EXIT; или Ctrl+D

4. Создание БД

CREATE DATABASE blog_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SHOW DATABASES;

utf8mb4 поддерживает emoji + не-латинские символы. Старый utf8 3-байтовый — emoji сломает.

5. Создание пользователя + права

CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'СИЛЬНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON blog_db.* TO 'blog_user'@'localhost';

GRANT SELECT ON blog_db.* TO 'reader'@'localhost';

CREATE USER 'app_user'@'192.168.1.50' IDENTIFIED BY 'ПАРОЛЬ';
GRANT ALL ON app_db.* TO 'app_user'@'192.168.1.50';

FLUSH PRIVILEGES;

@'localhost' — только с сервера, @'%' — с любого места (небезопасно — только с конкретным IP).

6. Просмотр / удаление прав

SHOW GRANTS FOR 'blog_user'@'localhost';
REVOKE INSERT, UPDATE ON blog_db.* FROM 'blog_user'@'localhost';
DROP USER 'старый_user'@'localhost';

7. Бэкап (mysqldump)

Одна БД

mysqldump -u root -p blog_db > blog_db.sql

Сжатый:

mysqldump -u root -p blog_db | gzip > blog_db_$(date +%Y%m%d).sql.gz

Все БД

mysqldump -u root -p --all-databases | gzip > all_dbs.sql.gz

Production: бэкап без блокировок

mysqldump -u root -p --single-transaction --routines --triggers blog_db > blog_db.sql

--single-transaction — консистентный бэкап без блокировок (для InnoDB).

Автоматизация через cron:

0 3 * * * mysqldump -u root -p'ПАРОЛЬ' blog_db | gzip > /backup/blog_$(date +\%Y\%m\%d).sql.gz

Пост cron, пост 3-2-1.

8. Restore

mysql -u root -p blog_db < blog_db.sql
zcat blog_db.sql.gz | mysql -u root -p blog_db

Если БД нет — сначала CREATE.

9. Удалённый доступ

По умолчанию MySQL слушает только localhost. Для удалённого:

/etc/mysql/mariadb.conf.d/50-server.cnf:

bind-address = 0.0.0.0
sudo systemctl restart mariadb
CREATE USER 'remote_user'@'YOUR_IP' IDENTIFIED BY 'СИЛЬНЫЙ_ПАРОЛЬ';
GRANT ALL ON db_name.* TO 'remote_user'@'YOUR_IP';
FLUSH PRIVILEGES;

В UFW открыть 3306 только для конкретного IP:

sudo ufw allow from YOUR_IP to any port 3306

⚠️ Никогда bind-address = 0.0.0.0 + GRANT % + UFW открыт — публичный MySQL = цель брутфорса.

10. Тюнинг производительности

/etc/mysql/mariadb.conf.d/50-server.cnf:

[mysqld]
innodb_buffer_pool_size = 2G

query_cache_size = 64M
query_cache_type = 1

max_connections = 200

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 3
sudo systemctl restart mariadb

11. Полезные команды

SELECT table_schema "Database",
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) "Size (MB)"
FROM information_schema.tables GROUP BY table_schema;

SHOW PROCESSLIST;

SELECT * FROM mysql.slow_log ORDER BY query_time DESC LIMIT 10;

REPAIR TABLE table_name;
OPTIMIZE TABLE table_name;

12. phpMyAdmin (GUI)

sudo apt install phpmyadmin -y

Apache-конфиг или вручную /etc/apache2/conf-available/phpmyadmin.conf. Браузер http://vds-ip/phpmyadmin.

⚠️ В проде phpMyAdmin не открывать в интернет — ограничьте IP через .htaccess или Cloudflare Access.

Частые ошибки

  • “Access denied for user”: неверный пароль или user @'host' не совпадает
  • “Too many connections”: увеличьте max_connections, убейте idle
  • “Disk full”: логи разрослись → почистите /var/log/mysql/
  • “InnoDB: Operating system error number 28”: диск заполнен → расширение диска Linux
  • “Can’t connect to MySQL server”: сервис не запущен → sudo systemctl status mariadb
  • Медленные запросы: включите slow log, EXPLAIN SELECT ..., добавьте INDEX

Итог

MySQL/MariaDB — базовая инфраструктура — для WordPress или собственного ПО. Установка за 5 минут; production-ready с бэкапами + безопасностью + тюнингом.

VDS KavesNET на NVMe SSD — идеален для MySQL: disk I/O — кровь БД.

По теме: Ручная установка WordPress · Бэкапы серверов

Теги MySQL MariaDB БД Туториал

Похожие статьи

Возможно, вас также заинтересует.