Пользователи, привилегии и резервные копии
Эксплуатационный минимум администратора: права доступа и резервные копии.
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. - Бэкапы обязательно проверяйте восстановлением на тесте.