Пользователи, привилегии и резервные копии

Эксплуатационный минимум администратора: права доступа и резервные копии.

mysqldump — утилита, которая выгружает базу данных в текстовый файл с SQL-командами для последующего восстановления.

Управление доступом — GRANT и REVOKE

Мы уже создавали пользователя в первом разделе. На эксплуатации это рутина: завести учётку под сервис, выдать минимальные права, при необходимости отозвать.

CREATE USER 'reporter'@'%' IDENTIFIED BY 'пароль';
GRANT SELECT ON shop.* TO 'reporter'@'%';   -- только чтение
REVOKE SELECT ON shop.* FROM 'reporter'@'%';
SHOW GRANTS FOR 'reporter'@'%';

Часть 'reporter'@'%' разрешает подключение с любого хоста (% — шаблон). Для прода это сужают до конкретных адресов.

Резервное копирование mysqldump

Бэкап — не «когда-нибудь», а обязательная часть эксплуатации. mysqldump создаёт логическую копию: SQL-файл, который воссоздаёт схему и данные.

# выгрузить одну базу в файл
mysqldump -u root -p shop > shop_backup.sql

# выгрузить только структуру (без данных)
mysqldump -u root -p --no-data shop > shop_schema.sql

# выгрузить все базы
mysqldump -u root -p --all-databases > full_backup.sql

Восстановление

Восстановление — это просто прогон сохранённого SQL-файла обратно через клиент mysql.

# создать пустую базу и залить в неё дамп
mysql -u root -p -e "CREATE DATABASE shop;"
mysql -u root -p shop < shop_backup.sql

Главное правило бэкапов: они бесполезны, если их не проверяют. Регулярно пробуйте восстановить дамп на тестовом сервере — иначе в момент аварии может выясниться, что копии битые.

Логические и физические копии

ТипЧем делаютОсобенности
Логическаяmysqldumpпереносимый SQL-файл, медленнее на больших БД
Физическаякопия файлов данных / спец.утилитыбыстрее для огромных БД, менее переносима

Итог

  • Доступом управляют GRANT/REVOKE; права давайте минимальные, хосты сужайте.
  • mysqldump делает логическую копию — SQL-файл со схемой и данными.
  • Восстановление — это прогон дампа через mysql ... < file.sql.
  • Бэкапы обязательно проверяйте восстановлением на тесте.
Проверьте себя
1. Что делает утилита mysqldump?
Aускоряет запросы
Bвыгружает базу в SQL-файл для резервной копии
Cсоздаёт индексы
Dудаляет старые логи
2. Как восстановить базу из дампа shop_backup.sql?
Amysqldump shop > shop_backup.sql
Bmysql -u root -p shop < shop_backup.sql
CTRUNCATE shop_backup.sql
DGRANT shop_backup.sql
3. Почему важно периодически проверять резервные копии восстановлением?
Aчтобы освободить место
Bбитый или неполный бэкап обнаружится только при попытке восстановления
Cэто ускоряет mysqldump
Dиначе MySQL не запустится
Поддержать проект