- Home »

Установка MySQL на последний CentOS
Сегодня поговорим о том, как поставить MySQL на самый свежий CentOS — быстро, без боли и с пониманием, что вообще происходит под капотом. Если ты когда-нибудь сталкивался с задачей поднять базу на сервере, знаешь: хочется, чтобы всё работало сразу, без танцев с бубном, но при этом было понятно, что и зачем ты делаешь. Эта статья — не просто пошаговая инструкция, а разбор, как работает установка MySQL на CentOS, какие есть подводные камни, как не наступить на грабли и получить рабочую базу, которую не стыдно показать даже самому придирчивому DevOps-у. Погнали!
Как это работает? — Краткий ликбез о MySQL и CentOS
MySQL — это классика жанра, реляционная база данных, которая пережила десятки форков, сотни апдейтов и миллионы установок на серверах по всему миру. CentOS — это стабильная, enterprise-ориентированная ОС, которую любят за предсказуемость и долгий цикл поддержки. Но с выходом CentOS Stream и прекращением поддержки классического CentOS 8, всё стало чуть веселее: теперь у нас есть CentOS Stream (rolling release), AlmaLinux, Rocky Linux и прочие клоны. Но суть одна — установка MySQL на свежий CentOS (Stream 9, например) требует понимания, откуда брать пакеты, как не получить старую версию MariaDB вместо MySQL и как не словить конфликты зависимостей.
- MySQL — база данных, которую используют для всего: от блогов до огромных e-commerce платформ.
- CentOS — серверная ОС, максимально близкая к Red Hat Enterprise Linux (RHEL), но бесплатная.
- В новых версиях CentOS по умолчанию ставится MariaDB, а не MySQL. Это важно!
Почему это важно? Потому что если ты просто напишешь yum install mysql-server
, получишь MariaDB, а не MySQL. Для некоторых проектов это ок, но если тебе нужна именно оригинальная MySQL (например, для совместимости с каким-нибудь экзотическим софтом или для тестирования миграций), придётся немного заморочиться.
Как быстро и просто всё настроить? — Пошаговая инструкция
Давай разберёмся, как поставить MySQL на CentOS Stream 9 (или 8), чтобы всё работало из коробки. Я покажу рабочий способ через официальный репозиторий MySQL, чтобы получить актуальную версию (8.x на момент написания).
- Удаляем MariaDB (если вдруг она уже стоит):
sudo systemctl stop mariadb
sudo yum remove mariadb mariadb-server
- Добавляем официальный репозиторий MySQL:
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
Для CentOS 8 используемmysql80-community-release-el8-1.noarch.rpm
- Обновляем кэш репозиториев:
sudo yum repolist all
- Устанавливаем MySQL Server:
sudo yum install mysql-community-server
- Запускаем и добавляем в автозагрузку:
sudo systemctl start mysqld
sudo systemctl enable mysqld
- Проверяем статус:
sudo systemctl status mysqld
- Находим временный пароль root:
sudo grep 'temporary password' /var/log/mysqld.log
- Запускаем безопасную настройку:
sudo mysql_secure_installation
Тут можно задать новый пароль, отключить анонимных пользователей, запретить root-доступ удалённо и т.д.
Всё, теперь у тебя чистый, свежий MySQL 8 на CentOS. Можно подключаться через mysql -u root -p
и творить добро.
Примеры, схемы, практические советы
Давай разберём пару кейсов из жизни, чтобы не было ощущения, что всё всегда идёт по плану.
Кейс | Что пошло не так? | Решение | Рекомендация |
---|---|---|---|
Установил MySQL, но не могу подключиться по сети | MySQL слушает только localhost по умолчанию | Правим /etc/my.cnf :bind-address = 0.0.0.0 Перезапускаем сервис |
Ограничь доступ через firewall и пользователей! |
После установки не запускается сервис | Порт 3306 занят или SELinux блокирует | Проверь netstat -tuln , getenforce , логи /var/log/mysqld.log |
Открой порт 3306 в firewall, настрой SELinux policy |
Нужна другая версия MySQL (например, 5.7) | По умолчанию ставится 8.x | Отключи репозиторий 8.0:sudo yum-config-manager --disable mysql80-community Включи нужный: sudo yum-config-manager --enable mysql57-community |
Используй только официальные репозитории! |
Практические советы:
- Делай бэкапы до обновлений и миграций.
- Используй
mysql_secure_installation
— это не формальность, а реально защищает от банальных взломов. - Для автоматизации используй Ansible, Chef, Puppet — установка MySQL там реализована как отдельные роли.
- Для тестовых стендов можно использовать Vagrant + VirtualBox — быстро поднимаешь стенд, гоняешь миграции, сносишь.
Похожие решения, программы и утилиты
MySQL — не единственный игрок на поле. Вот краткое сравнение с другими популярными СУБД:
СУБД | Плюсы | Минусы | Когда использовать |
---|---|---|---|
MySQL | Скорость, простота, огромное комьюнити, поддержка большинства CMS | Лицензия Oracle, не все фичи Enterprise бесплатны | Веб-проекты, e-commerce, SaaS |
MariaDB | Форк MySQL, полностью open-source, совместимость | Некоторые фичи расходятся с MySQL, не всегда 100% совместимость | Когда нужен open-source и совместимость с MySQL |
PostgreSQL | Мощные фичи, расширяемость, строгая поддержка стандартов | Сложнее в настройке, не всегда поддерживается “из коробки” в старых CMS | Финтех, аналитика, сложные проекты |
Percona Server | Расширения для MySQL, улучшенная производительность | Меньше документации, специфические фичи | Когда нужна максимальная производительность и мониторинг |
Если хочется автоматизировать установку — смотри в сторону Ansible (роль geerlingguy.mysql), Chef, Puppet. Для быстрой проверки миграций — Docker (docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=pass -d mysql:8
).
Статистика, сравнение с другими решениями, интересные факты
- MySQL — самая популярная СУБД в мире по данным DB-Engines (2024).
- В CentOS 9 Stream MariaDB идёт по умолчанию, но MySQL можно поставить из официального репозитория Oracle.
- MySQL 8.x поддерживает JSON, CTE, Window Functions — почти как PostgreSQL, но проще в освоении.
- MySQL можно запускать в режиме “in-memory” для тестов и CI/CD.
- Для мониторинга MySQL есть крутые open-source тулзы: Percona Monitoring and Management, Prometheus + Grafana.
Нестандартные способы использования и автоматизация
- Можно поднять несколько инстансов MySQL на одном сервере — просто укажи разные
datadir
иport
вmy.cnf
. - Для CI/CD удобно использовать
mysqld --initialize-insecure --datadir=/tmp/mysqltest
— быстро поднимаешь временную базу для тестов. - Скрипты для бэкапа и восстановления можно автоматизировать через cron +
mysqldump
илиmysqlpump
. - MySQL можно использовать как очередь задач (через таблицы), если не хочется тянуть RabbitMQ или Redis.
Какие новые возможности открываются и чем это поможет в автоматизации и скриптах?
С выходом MySQL 8.x появилось много фич, которые реально упрощают жизнь:
- Поддержка roles — теперь можно гибко управлять правами пользователей.
- JSON-операции — удобно хранить и обрабатывать semi-structured данные.
- CTE и Window Functions — сложные запросы теперь пишутся проще и быстрее.
- Параллельные DDL-операции — можно менять структуру таблиц без простоя.
- Улучшенная репликация — для отказоустойчивости и масштабирования.
В автоматизации это значит, что можно:
- Генерировать пользователей и роли скриптами (
CREATE ROLE
,GRANT
). - Делать миграции без даунтайма.
- Интегрировать MySQL в пайплайны CI/CD (например, через Docker или Ansible).
- Строить сложные отчёты прямо в базе, не вытаскивая данные наружу.
Вывод — заключение и рекомендации
Установка MySQL на последний CentOS — задача несложная, если знаешь, где искать свежие пакеты и как не попасть в ловушку с MariaDB. Официальный репозиторий Oracle — твой друг, а mysql_secure_installation
— must-have шаг после инсталляции. Не забывай про безопасность: firewall, SELinux, пароли, бэкапы. Для автоматизации — Ansible, Docker, скрипты на bash. Если нужен быстрый старт для проекта — VPS или выделенный сервер с CentOS и MySQL можно заказать здесь или тут (follow).
Используй MySQL, когда нужна скорость, простота и поддержка огромного количества приложений. Если хочется больше фич — смотри в сторону PostgreSQL или Percona. Для большинства задач MySQL 8.x — отличный выбор: современный, быстрый, с хорошей поддержкой и документацией (официальная документация). Не бойся автоматизировать и экспериментировать — серверная жизнь слишком коротка для ручных установок!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.