Как поднять свою базу данных MySQL с помощью MariaDB
MariaDB — это популярная реляционная база данных с открытым исходным кодом, являющаяся форком MySQL. Она полностью совместима с MySQL и предлагает множество улучшений в производительности и безопасности. В этой статье мы разберём, как установить и запустить MariaDB на сервере, а также выполнить базовую настройку.
Зачем использовать MariaDB вместо MySQL?
MariaDB была создана в 2009 году после того, как Oracle приобрела MySQL. Чтобы обеспечить открытость и свободное развитие проекта, основатели MySQL начали разрабатывать MariaDB. Причины выбрать MariaDB:
- Полная совместимость с MySQL (включая синтаксис и API);
- Активное сообщество и регулярные обновления;
- Улучшенная производительность для некоторых типов запросов;
- Дополнительные возможности: новые хранилища, оптимизаторы и функции безопасности.
Установка MariaDB
Ubuntu/Debian
sudo apt update
sudo apt install mariadb-server
CentOS/RHEL
sudo dnf install mariadb-server
Arch Linux
sudo pacman -S mariadb
Запуск и включение MariaDB
После установки необходимо запустить службу MariaDB и включить её автозапуск:
sudo systemctl start mariadb
sudo systemctl enable mariadb
Настройка безопасности
MariaDB поставляется с утилитой для быстрой настройки базовой безопасности:
sudo mysql_secure_installation
Вы сможете задать root-пароль, отключить удалённый доступ, удалить тестовую базу и т.д.
Подключение к MariaDB
sudo mariadb -u root -p
После ввода пароля вы попадёте в консоль управления базой данных.
Создание базы данных и пользователя
CREATE DATABASE myapp_db;
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';
FLUSH PRIVILEGES;
Удалённое подключение к MariaDB
По умолчанию MariaDB принимает подключения только с локальной машины. Чтобы разрешить удалённый доступ, нужно внести изменения в конфигурацию и убедиться, что фаервол пропускает соединения.
Разрешение подключений в конфиге
Откройте файл конфигурации:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Найдите строку:
bind-address = 127.0.0.1
И измените ее на:
bind-address = 0.0.0.0
Это разрешит прослушивание всех внешних IP-адресов. Если хотите ограничить доступ, укажите конкретный IP.
Сохраните файл и перезапустите MariaDB:
sudo systemctl restart mariadb
Создание пользователя с удалённым доступом
Если вы ещё не создавали пользователя с доступом снаружи:
CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON myappdb.* TO 'remoteuser'@'%';
FLUSH PRIVILEGES;
Символ %
означает «любой хост». Для повышения безопасности можно указать конкретный IP, например 'remoteuser'@'203.0.113.5'
.
Открытие порта 3306 в фаерволе
Если используете UFW:
sudo ufw allow 3306/tcp
Подключение с другой машины
Теперь можно подключаться к базе с внешнего сервера:
mysql -u remoteuser -h 203.0.113.10 -p
Где 203.0.113.10
— это IP-адрес сервера с MariaDB.
Безопасность при удалённом подключении
Удалённый доступ к MariaDB удобен, но может представлять угрозу безопасности. Чтобы минимизировать риски:
- Вместо открытия порта 3306 в интернет, создайте безопасный туннель через SSH:
ssh -L 3307:localhost:3306 user@203.0.113.10
После этого подключайтесь к MariaDB через локальный порт:
mysql -u remoteuser -h 127.0.0.1 -P 3307 -p
Такой подход не требует открытого порта и защищает данные от перехвата.
- Указывайте конкретные IP-адреса! Вместо
'%'
в SQL-правах указывайте точный IP клиента:
CREATE USER 'remoteuser'@'203.0.113.50' IDENTIFIED BY 'strongpassword';
- Отключайте root-доступ снаружи.
Никогда не предоставляйте удалённый доступ пользователю root
. Создавайте отдельные аккаунты с нужными правами.
- Следите за логами
Логи MariaDB помогут обнаружить подозрительную активность:
sudo tail -f /var/log/mysql/error.log
Проверка состояния MariaDB
Проверить, работает ли MariaDB, можно с помощью команды:
sudo systemctl status mariadb
Или через сокет:
sudo mysqladmin version
Автоматическое резервное копирование (по желанию)
Создадим cron-задачу для ежедневного дампа:
echo "0 3 * * * mysqldump -u root -p'yourpassword' myapp_db > /var/backups/myapp_db_$(date +\%F).sql" | sudo tee -a /etc/crontab
Не забудьте заменить _yourpassword_
на настоящий пароль и защитить права доступа к crontab.
Заключение
MariaDB — отличная альтернатива MySQL, особенно если вы ищете решение с открытым исходным кодом и активным развитием. Благодаря полной совместимости, перейти на MariaDB с MySQL несложно, а настройка новой базы занимает всего несколько минут. Это отличный выбор как для продакшн-серверов, так и для локальной разработки.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний