Установка MySQL / MariaDB на Ubuntu: настройка безопасности и создание базы
Развертывание реляционной базы данных с нуля
Для работы большинства CMS (WordPress, Bitrix) и веб-сервисов требуется сервер реляционных баз данных MySQL или его улучшенный форк MariaDB. Сразу после чистой установки база данных остается незащищенной (отсутствует пароль суперпользователя, включены гостевые аккаунты и тестовые таблицы). Необходимо корректно инициализировать безопасность и создать рабочие учетные записи.
Сравнение MySQL и MariaDB:
| Параметр | MySQL (Oracle) | MariaDB (Open Source Community) |
|---|---|---|
| Совместимость | Стандарт индустрии | 100% бинарная совместимость с командами MySQL |
| Производительность | Стабильная и предсказуемая | Быстрее выполняет сложные JOIN запросы |
| Пакет установки | mysql-server | mariadb-server |
Пошаговое руководство по установке и настройке
Шаг 1. Установка сервера СУБД
sudo apt update # Для установки MySQL: sudo apt install mysql-server -y # ЛИБО для установки MariaDB (выберите одно из двух): # sudo apt install mariadb-server -yШаг 2. Запуск мастера безопасности (mysql_secure_installation)
Запустите встроенный интерактивный мастер настройки защиты:
sudo mysql_secure_installationОтветьте на системные вопросы мастера:
- VALIDATE PASSWORD COMPONENT? — Нажмите
y(для строгих паролей) илиn(если хотите задавать простые пароли в разработке). - Set root password? — Задайте надежный сложный пароль администратора СУБД.
- Remove anonymous users? — Нажмите
y(удалить анонимных пользователей). - Disallow root login remotely? — Нажмите
y(запретить вход root с чужих компьютеров). - Remove test database? — Нажмите
y(удалить тестовую базу данных). - Reload privilege tables now? — Нажмите
y(применить изменения).
- VALIDATE PASSWORD COMPONENT? — Нажмите
Шаг 3. Вход в консоль СУБД и создание первой базы
Войдите в командный интерфейс MySQL под правами суперпользователя:
sudo mysqlВыполните стандартные SQL-команды создания базы и пользователя:
-- 1. Создаем базу данных: CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 2. Создаем отдельного пользователя (НЕ используйте root для сайтов!): CREATE USER 'site_user'@'localhost' IDENTIFIED BY 'SuperSecret_Password123!'; -- 3. Выдаем пользователю полные права только на его базу данных: GRANT ALL PRIVILEGES ON my_database.* TO 'site_user'@'localhost'; -- 4. Сбрасываем кэш привилегий и выходим: FLUSH PRIVILEGES; EXIT;
Частые вопросы (FAQ)
Почему при попытке войти через mysql -u root -p выдает Access Denied?
В современных версиях Ubuntu вход под root заблокирован через плагин auth_socket (вход разрешен только локальному пользователю Linux через команду sudo mysql).
Как проверить, запущена ли служба базы данных прямо сейчас?
Выполните команду: sudo systemctl status mysql (или mariadb). В статусе должно быть зеленое Active: active (running).
Что такое кодировка utf8mb4 и зачем указывать ее при создании базы?
Кодировка utf8mb4 — это полноценный стандарт Unicode, который в отличие от старого utf8 поддерживает хранение спецсимволов и эмодзи без ошибок.
Как сделать резервную копию созданной базы данных?
Используйте утилиту mysqldump: mysqldump -u site_user -p my_database > backup.sql.