Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Установка MySQL / MariaDB на Ubuntu: настройка безопасности и создание базы

Обновлено: 27.08.2026 · Официальная документация ↗

Развертывание реляционной базы данных с нуля

Для работы большинства CMS (WordPress, Bitrix) и веб-сервисов требуется сервер реляционных баз данных MySQL или его улучшенный форк MariaDB. Сразу после чистой установки база данных остается незащищенной (отсутствует пароль суперпользователя, включены гостевые аккаунты и тестовые таблицы). Необходимо корректно инициализировать безопасность и создать рабочие учетные записи.

Сравнение MySQL и MariaDB:

ПараметрMySQL (Oracle)MariaDB (Open Source Community)
СовместимостьСтандарт индустрии100% бинарная совместимость с командами MySQL
ПроизводительностьСтабильная и предсказуемаяБыстрее выполняет сложные JOIN запросы
Пакет установкиmysql-servermariadb-server

Пошаговое руководство по установке и настройке

  1. Шаг 1. Установка сервера СУБД

    sudo apt update
    
    # Для установки MySQL:
    sudo apt install mysql-server -y
    
    # ЛИБО для установки MariaDB (выберите одно из двух):
    # sudo apt install mariadb-server -y
  2. Шаг 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 (применить изменения).
  3. Шаг 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;
💡 Практика специалистов: Никогда не прописывайте системного пользователя root в конфигурационных файлах ваших сайтов (wp-config.php, .env). Всегда создавайте для каждого отдельного проекта отдельную базу и отдельного ограниченного пользователя, как показано в инструкции.

Частые вопросы (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.

Полезные материалы
Рекомендуем