Установка MariaDB на Debian. Установка MariaDB в Windows. Переход с MySQL на MariaDB в Windows Чем MariaDB лучше MySQL

Я решил отказаться от использования MySQL, а точнее полностью перевести все свои сервера на ее форк — MariaDB. Пользуясь случаем, хочу рассказать о процессе установки MariaDB 10.1 в Debian 8. Следует отметить, что краткое описание установки MariaDB есть на официальной странице проекта. Я решил выделить этому вопросу отдельный пост, в котором хочу описать необходимые действия после установки MariaDB на сервере.

Перед началом установки MariaDB необходимо добавить ее репозиторий. На сайте MariaDB рекомендуют для этого установить пакет software-properties-common . Я не вижу в этом никакого смысла и предпочитаю все делать вручную.

Регистрируем GPG-ключ репозитория в системе:

Apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

Добавляем описание репозитория в файл sources.list . Открываем файл в редакторе nano:

Nano /etc/apt/sources.list

Копируем в конец следующие строки:

Deb http://lon1.mirrors.digitalocean.com/mariadb/repo/10.1/debian jessie main deb-src http://lon1.mirrors.digitalocean.com/mariadb/repo/10.1/debian jessie main

Обновляем список доступных пакетов:

Apt-get update

Запускаем процесс установки MariaDB 10.1:

Apt-get install mariadb-server

Во время установки нас попросят ввести пароль для пользователя root . На этом процесс установки MariaDB в Debian 8 закончен. А теперь переходим к настройке сервера.

Чтобы повысить надежность нашего сервера, нужно выполнить минимальные требования безопасности. Запретить авторизацию под пользователем root с удаленных хостов. При наличии базы test и пользователя anonymous , нужно удалить их с сервера. Чтобы облегчить задачу используйте скрипт:

Mysql_secure_installation

Тип хранения данных по умолчанию

Если необходимо изменить тип хранения данных по умолчанию, добавьте в файл my.cnf следующие строки:

Default-storage-engine = innodb

Убедитесь, что MariaDB использует таблицы InnoDB по умолчанию. Для этого выполните команду:

SHOW ENGINES;

Создать пользователя и базу MariaDB

Чтобы создать пользователя в MariaDB используйте команду ниже:

CREATE USER "USER_NAME"@"localhost" IDENTIFIED BY "PASSWORD";

Создаем новую базу:

CREATE DATABASE database_name;

Даем полные права пользователю USER_NAME на базу databasename:

GRANT ALL PRIVILEGES ON database_name.* TO "USER_NAME"@"localhost";

Теперь нужно обновить все привилегии:

FLUSH PRIVILEGES

Для просмотра привилегий выполните команду:

SHOW GRANTS FOR "USER_NAME"@"localhost";

Бинарные логи

MariaDB записывает все изменения БД в бинарный журнал, он необходим для работы механизма репликации. Если вы не делали бэкапов или они устарели, бинарные логи можно использовать для восстановления данных. Впрочем, нет никакой гарантии, что данные будут полностью или частично восстановлены. Успех будет зависеть от размера, времени хранения бинарных логов, частоты выполнения бэкапа.

Для отключения бинарных логов, комментируем строки в файле my.cnf:

#log_bin = /var/log/mysql/mariadb-bin #log_bin_index = /var/log/mysql/mariadb-bin.index

Здравствуйте!

Я полностью поддерживаю Ваше решение! Я перевел свои серверы на MariaDB с MySQL 3 года назад и не от хорошей жизни. Версии MySQL после покупки его компанией Oracle становились все хуже и хуже. Постоянные падения и ошибки в таблицах плохо влияли на доступность сайтов, тогда было принято решение перейти на MariaDB.

Результат полностью себя оправдал, MariaDB очень стабильна и хорошо оптимизирована. Трехлетний аптайм без перерывов на нескольких серверах отлично это доказывает.

Выбор версии MariaDB

  • /var/run/php5-fpm.sock уже должен присутствовать на сервере? в ubuntu 16.04 не нашел такого файла в /var/run
  • Существует 2 ветки MariaDB - 5.x и 10.x.

    5.x - это версии, максимально приближенные к MySQL последних версий, они полностью совместимы с MySQL. Если вы только переходите на MariaDB с MySQL - эта линейка версий для вас.

    10.x - новая линейка версий, которую начали после версии 5.5. Эти версии полностью не копируют все новые функции последних версий MySQL, но содержат свои уникальные функции. Они по прежнему совместимы с MySQL, но, если вы только начинаете использовать MariaDB - лучше начать с версии 5.5.

    Установка MariaDB на Linux сервер

    Дистрибутивов MariaDB обычно нет в репозитариях основных дистрибутивов Linux (например в CentOS 6 и CentOS 7). Но, даже если бы были, лучше установить в систему родной репозитарий MariaDB, чтобы всегда иметь актуальные версии. Для установки репозитария yum следуйте инструкции:

    1. Создайте новый файл репозитария с помощью команды:

    vi /etc/yum.repos.d/MariaDB.repo

    Нажмите клавишу i для перехода в режим редактирования редактора vi.

    2. Получите текст файла для своей версии дистрибутива Linux по этой ссылке . Вам понадобится выбрать название дистрибутива, его версию и разрядность:

    Скопируйте текст для файла репозитария, вставьте его в свой файл и нажмите ":wq" для выхода из редактора vi с сохранением.

    Теперь можно установить MariaDB Server и программы окружения с помощью yum:

    yum install MariaDB-server MariaDB-client

    Библиотеки для различных языков программирования можно устанавливать для MySQL, они полностью совместимы. Например, для PHP:

    Теперь вам необходимо запустить установленный сервер MariaDB и перейти к его настройке:

    Если вы все сделали правильно, увидите такое сообщение:

    Настройка MariaDB

    Для нормального начала работы с MariaDB, вам необходимо установить root пароль. Подробно о тюнинге и оптимизации базы данных я расскажу в специальной статье, это не первоочередные вещи.

    Первоначальная установка root пароля MySQL:

    Самый простой способ установить пароль root - использовать специальный скрипт, он входит в дистрибутив MariaDB:

    /usr/bin/mysql_secure_installation

    Следуйте инструкциям и установите root пароль.

    Если у вас остались вопросы или нужны уточнения - пожалуйста, задайте вопрос или оставьте комментарий.

    Я всегда рад помочь!

    Сегодня займемся поднятием одной из наиболее востребованных ролей любого linux сервера, которые занимают в этом функциональном сегменте лидирующую роль. Настройка web сервера CentOS 7 на базе связки популярного http сервера apache , интерпретатора php и сервера баз данных mysql , или коротко — установка lamp. Данная связка является самой популярной конфигурацией на сегодняшний день среди веб хостинга. Хотя последнее время ей на пятки наступает та же компания, но на базе nginx, возможно уже и опередила, точных данных у меня нет на этот счет.

    Данная статья является частью единого цикла статьей про сервер .

    Web сервер на CentOS 7

    Итак, наш веб сервер centos будет состоять из трех основных компонентов — http сервера apache , интерпретатора языка программирования php и сервера баз данных mysql . Познакомимся немного с каждым из них:

    1. Apache — http сервер или просто веб сервер апач. Является кросплатформенным ПО, поддерживающим практически все популярные операционные системы, в том числе и Windows. Ценится прежде всего за свою надежность и гибкость конфигурации, которую можно существенно расширить благодаря подключаемым модулям, которых существует великое множество. Из недостатков отмечают большую требовательность к ресурсам, по сравнению с другими серверами. Держать такую же нагрузку, как, к примеру, nginx, apache не сможет при схожих параметрах железа.
    2. PHP — язык программирования общего назначения, который чаще всего применяется в веб разработке. На сегодняшний день это самый популярный язык в этой области применения. Поддерживается практически всеми хостинг-провайдерами.
    3. Mysql — система управления базами данных. Завоевала свою популярность в среде малых и средних приложений, которых очень много в вебе. Так что, как и php, на сегодняшний день является самой популярной бд, использующейся на веб сайтах. Поддерживается большинством хостингов. В CentOS вместо mysql устанавливается mariadb — ответвление mysql. Они полностью совместимы, возможен в любой момент переход с одной субд на другую и обратно. Последнее время я встречал информацию, что mariadb пошустрее работает mysql и люди потихоньку перебираются на нее. На практике мне не довелось это наблюдать, так как никогда не работал с нагруженными базами данных. А в обычных условиях разница не заметна.

    Подопытным сервером будет выступать , характеристики следующие:

    Процессор 2 ядра
    Память 8 Gb
    Диск 150 Gb SSD

    Это кастомная настройка параметров. Они не оптимальны по цене, но мне были нужны именно такие.

    Хочу сразу уточнить, что разбираю базовую дефолтную настройку. Для улучшения быстродействия, повышения надежности и удобства пользования нужно установить еще несколько инструментов, о чем я расскажу отдельно. В общем случае для организации веб сервера будет достаточно того, что есть в этой статье.

    Если у вас еще нет сервера, то вам надо выполнить . А если сервер уже установлен, то не забудьте его . Рекомендую обратить внимание именно на настройку, так как там много полезной информации, которую в рамках этой статьи я не даю — обновление системы, настройка фаервола, установка редактора и многое другое.

    Настройка apache в CentOS 7

    В CentOS служба apache называется httpd . Когда я только знакомился с этим дистрибутивом, мне было непривычно. В Freebsd и Debian, с которыми я до этого работал служба веб сервера называлась apache, хотя где-то я замечал, кажется во фрюхе, что файл конфигурации имеет имя httpd.conf. До сих пор я не знаю, почему распространились оба эти названия. Был бы рад, если бы со мной кто-то поделился информацией на этот счет в комментариях.

    Теперь приступим к установке apache . В CentOS 7 это делается очень просто:

    # yum install -y httpd

    Добавляем apache в автозагрузку:

    # systemctl enable httpd

    Запускаем apache в CentOS 7:

    # systemctl start httpd

    Проверяем, запустился ли сервер:

    # netstat -tulnp | grep httpd tcp6 0 0:::80:::* LISTEN 21586/httpd

    Все в порядке, повис на 80-м порту, как и положено. Уже сейчас можно зайти по адресу http://ip-address и увидеть картинку:

    Теперь займемся настройкой apache. Я предпочитаю следующую структуру веб хостинга:

    Создаем подобную структуру:

    # mkdir /web && mkdir /web/site1.ru && mkdir /web/site1.ru/www && mkdir /web/site1.ru/logs # chown -R apache. /web

    IncludeOptional conf.d/*.conf

    Если нет, раскомментируем и идем в каталог /etc/httpd/conf.d. С оздаем там файл site1.ru.conf :

    ServerName site1.ru ServerAlias www.site1.ru DocumentRoot /web/site1.ru/www Options FollowSymLinks AllowOverride All Require all granted ErrorLog /web/site1.ru/logs/error.log CustomLog /web/site1.ru/logs/access.log common

    Перезапуск apache в centos

    Теперь делаем restart apache :

    # systemctl restart httpd

    Если возникли какие-то ошибки — смотрим лог apache /var/log/httpd/error_log . Если все в порядке, то проверим, нормально ли настроен наш виртуальный хост. Для этого создадим в папке /web/site1.ru/www файл index.html следующего содержания:

    # mcedit /web/site1.ru/www/index.html

    Апач настроен!

    # chown apache. /web/site1.ru/www/index.html

    192.168.1.25 site1.ru

    где 192.168.1.25 ip адрес нашего веб сервера.

    Теперь в браузере набираем адрес http://site1.ru . Если видим картинку:

    значит все правильно настроили. Если какие-то ошибки, то идем смотреть логи. Причем в данном случае не общий лог httpd , а лог ошибок конкретного виртуального хоста по адресу /web/site1.ru/logs/error.log .

    Сразу же обращу ваше внимание на настройку ротации логов виртуальных хостов. Частенько бывает, что если сразу не настроишь, потом забываешь. Но если сайт с хорошей посещаемостью, то логи будут расти стремительно и могут занять очень много места. Лучше настроить ротацию логов веб сервера сразу же после создания. Сделать это не сложно.

    Чтобы настроить ротацию логов виртуальных хостов, необходимо отредактировать файл /etc/logrotate.d/httpd . Он создается во время установки apache и включает в себя настройку ротации стандартного расположения логов. А так как мы перенесли логи каждого виртуального хоста в индивидуальную папку, необходимо добавить эти папки в этот файл:

    # mcedit /etc/logrotate.d/httpd /web/*/logs/*.log /var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript }

    В принципе, простейший веб сервер уже готов и им можно пользоваться. Но вряд ли сейчас найдутся сайты со статическим содержимым, которым достаточно поддержки только html. Так что продолжим нашу настройку.

    Если вам необходимо организовать работу сайта по протоколу https , то воспользуйтесь руководством по .

    Установка php в CentOS 7

    Для поддержки динамического содержимого сайтов выполним следующий шаг. Установим php в CentOS 7:

    # yum install -y php

    И следом еще несколько полезных компонентов. Установим популярные модули для php :

    # yum install -y php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd

    Выполним перезапуск apache:

    # systemctl restart httpd

    Создадим файл в директории виртуального хоста и проверим работу php:

    # mcedit /web/site1.ru/www/index.php # chown apache. /web/site1.ru/www/index.php

    Заходим по адресу http://site1.ru/index.php

    Вы должны увидеть вывод информации о php. Если что-то не так, возникли какие-то ошибки, смотрите лог ошибок виртуального хоста, php ошибки будут тоже там.

    Где лежит php.ini

    После установки часто возникает вопрос, а где хранятся настройки php? Традиционно они находятся в едином файле настроек. В CentOS php.ini лежит в /etc , прямо в корне. Там можно редактировать глобальные настройки для все виртуальных хостов. Персональные настройки каждого сайта можно сделать отдельно в файле конфигурации виртуального хоста, который мы сделали раньше. Давайте добавим туда несколько полезных настроек:

    # mcedit /etc/httpd/conf.d/site1.ru.conf

    Добавляем в самый конец, перед

    Php_admin_value date.timezone "Europe/Moscow" php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M

    Для применения настроек нужно сделать restart apache. Теперь в выводе phpinfo можно увидеть изменение настроек.

    Обновление до php 5.6 в CentOS 7

    В нашем примере мы установили на CentOS 7 php 5.4 из стандартного репозитория. А что делать, если нам нужна более новая версия, например php 5.6 ? В таком случае нужно выполнить обновление php.

    # wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm # rpm -Uvh remi-release-7*.rpm

    Теперь обновляем php 5.4 до php 5.6 :

    # yum --enablerepo=remi,remi-php56 install php php-common php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd

    Перезапускаем apache:

    # systemctl restart httpd

    И идем смотреть вывод phpinfo — http://site1.ru/index.php

    Отлично, мы обновили php до версии 5.6.

    Установка MySQL в CentOS 7

    Как я уже писал ранее, сейчас все большее распространение получает форк mysql — mariadb . Она имеет полную совместимость с mysql, так что можно смело пользоваться. Я предпочитаю использовать именно ее.

    Устанавливаем mariadb на CentOS 7:

    # yum install -y mariadb mariadb-server

    Добавляем mariadb в автозапуск:

    # systemctl enable mariadb.service

    Запускаем mariadb:

    # systemctl start mariadb

    Проверяем, запустилась или нет:

    # netstat -tulnp | grep mysqld tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 22276/mysqld

    Обращаю внимание, что она даже в системе отображается как сервис mysqld . Теперь запускаем стандартный скрипт настройки безопасности:

    # /usr/bin/mysql_secure_installation

    Не буду приводить весь вывод работы этого скрипта, там все достаточно просто и понятно. Сначала задаем пароль для root (текущий пароль после установки пустой), потом удаляем анонимных пользователей, отключаем возможность подключаться root удаленно, удаляем тестового пользователя и базу.

    Файл настроек mysql/mariadb лежит в /etc/my.cnf . Для обычной работы достаточно настроек по-умолчанию. Но если вы решите изменить их, не забудьте перезапустить службу баз данных.

    Перезапуск mariadb /mysql в CentOS 7:

    # systemctl restart mariadb

    На этом все. Базовый функционал web сервера на CentOS 7 настроен.

    Буду рад замечаниям и комментариям по теме статьи. Напоминаю, что данная статья является частью единого цикла статьей про сервер .

    Практикум по Kali Linux

    Курс для тех, кто интересуется проведением тестов на проникновение и хочет практически попробовать себя в ситуациях, близких к реальным. Курс рассчитан на тех, у кого еще нет опыта в информационной безопасности. Обучение длится 3 месяца по 4 часа в неделю. Что даст вам этот курс:
    • Искать и эксплуатировать уязвимости или изъяны конфигурации в корпоративных сетях, web сайтах, серверах. Упор на пентест ОС Windows и на безопасность корпоративного сегмента.
    • Изучение таких инструментов, как metasploit, sqlmap, wireshark, burp suite и многие другие.
    • Освоение инструментария Kali Linux на практике - с ним должен быть знаком любой специалист по ИБ.
    Проверьте себя на вступительном тесте и смотрите подробнее программу по.

    Что такое MariaDB

    MariaDB - это система управления базами данных (СУБД), которая основывается на MySQL и во многом с ней совместима.

    MariaDB и MySQL полностью совместимы в синтаксисе SQL запросов. То есть, если ваша программа использует базы данных MySQL (например, веб-сайт на PHP), то при переходе на MariaDB не нужно ничего менять в программе.

    MariaDB также бинарно совместима с коннекторами MySQL. Т.е. если вы используете коннекторы MySQL, то при переходе на MariaDB не нужно их менять.

    MariaDB совместима с форматами баз данных MySQL, но есть некоторые нюансы. Если вы переносите базы данных через экспорт/импорт (например, с помощью.SQL файла), то переносимые таким образом базы данных будут полностью совместимы между любыми версиями и не требуют каких-либо дальнейших действий. Тем не менее, если вы установили MariaDB поверх MySQL, то есть MariaDB использует файлы баз данных от MySQL, то нужно учитывать совместимость:

    • MariaDB 10.2 совместима с предыдущими версиями файлов данных MariaDB, а также с MySQL 5.6 и MySQL 5.7, но не совместима с MySQL 8.0.
    • MariaDB 10.1 совместима с предыдущими версиями файлов данных MariaDB, а также с MySQL 5.6.

    Дополнительная информация: https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/

    MariaDB работает на Windows и Linux. Эта программа с полностью открытым исходным кодом. Она распространяется как в форме исходных кодов, так и скомпилированных исполнимых файлов для Windows и всех популярных дистрибутивов Linux.

    Чем MariaDB лучше MySQL

    MariaDB поддерживает больше систем хранения (Storage Engines).

    В дополнении к стандартным MyISAM, BLACKHOLE, CSV, MEMORY, ARCHIVE, и MERGE движкам хранения, в MariaDB также имеются следующие:

    • ColumnStore, система хранения, ориентированная на столбцы, оптимизирована для хранилища данных.
    • MyRocks, система хранения с большим сжатием, добавлена с 10.2 версии
    • Aria, замена для MyISAM с улучшенным кэшированием.
    • FederatedX (замена для Federated)
    • OQGRAPH.
    • SphinxSE.
    • TokuDB.
    • CONNECT.
    • SEQUENCE.
    • Spider.
    • Cassandra.

    MariaDB имеет множество различных улучшений и оптимизаций в скорости обработки данных.

    MariaDB дополнена новыми расширениями и функциями.

    Скачать MariaDB для Windows

    MariaDB является бесплатной, настоятельно рекомендуется её скачивать с официального сайта. Страница для скачивания MariaDB: https://downloads.mariadb.org/

    Вы увидите несколько серий - несколько мажорных версий программы. Если вам не нужна какая-то специфическая совместимость с MySQL, то просто выберите самую последнюю версию и нажмите кнопку с «Download»

    Поскольку эта программа работает на разных операционных системах, то в следующем окне вы увидите большой выбор файлов для скачивания.

    Файлы Windows x86_64 - это 64-битные версии, а Windows x86 - 32-битные.

    .zip - это портативные версии, которые нужно устанавливать самостоятельно, но которые дают полную свободу в тонкой подстройке. А .msi - это установщик для Windows.

    В этой инструкции я покажу на примере работы с версией .zip .

    На следующей странице достаточно нажать кнопку: «No thanks, just take me to the download »:

    Установка MariaDB в Windows

    Для Windows СУБД MariaDB распространяется в виде установщика и ZIP архива. Я предпочитаю установку из ZIP архива, поскольку это позволяет полностью контролировать процесс.

    Установку во всех примерах я выполняю в папку C:\Server\bin\ , поскольку у меня MariaDB является частью веб-сервера, установленного по . Если у вас по-другому, то учитывайте это и делайте соответствующие поправки.

    mariadb и переместите в C:\Server\bin\ .

    Переместите папку C:\Server\bin\mariadb\data\ в папку C:\Server\data\DB\ .

    В папке C:\Server\bin\mariadb\ создайте файл my.cnf и скопируйте в него:

    Переход с MySQL на MariaDB в Windows

    Переход с MySQL на MariaDB с сохранением баз данных

    Можно выполнить переход разными способами. Я покажу самый универсальный метод, гарантирующий полную совместимость и отсутствие дальнейших проблем.

    Необходимо начать с создания резервной копии баз данных. Мы выполним это в командной строке с помощью утилиты (поставляется с MySQL и размещена в папке bin ).

    Откройте командную строку Windows. Для этого нажмите Win+x и выберите Windows PowerShell (администратор) . В открывшем окне выполните

    Перейдём в папку, где находится эта утилита (у вас может быть другой путь):

    Cd C:\Server\bin\mysql-8.0\bin\

    Сделайте дамп (резервную копию) всех баз данных следующей командой:

    Mysqldump.exe -u root -p --all-databases > all-databases.sql

    Теперь в папке C:\Server\bin\mysql-8.0\bin\ появится файл all-databases.sql - обязательно скопируйте его в безопасное место!

    Теперь остановите службу MySQL и удалите её из автозагрузки:

    Дополнительно скопируйте в безопасное место папку C:\Server\data\DB\data\ - это дополнительная резервная копия файлов баз данных MySQL - на тот случай, если с MariaDB что-то пойдёт не так и вы захотите вернуться к MySQL.

    Теперь удалите папки C:\Server\bin\mysql-8.0\ (бинарные файлы) и C:\Server\data\DB\data\ (базы данных).

    Распакуйте скаченный архив с MariaDB, переименуйте папку в mariadb и переместите в C:\Server\bin\ .

    Переместите папку C:\Server\bin\mariadb\data\ в папку C:\Server\data\DB\ .

    В папке C:\Server\bin\mariadb\ создайте файл my.cnf и скопируйте в него:

    Datadir="c:/Server/data/DB/data/"

    Для установки и запуска службы выполните команды:

    C:\Server\bin\mariadb\bin\mysqld --install net start mysql

    Для развёртывания баз данных из резервной копии, перейдите в папку C:\Server\bin\mariadb\bin\ :

    Cmd cd C:\Server\bin\mariadb\bin\

    И запустите команду вида:

    Mysql -uroot < C:\путь\до\файла\резервной_копии.sql

    Например, у меня файл all-databases.sql с резервной копией баз данных размещён в папке h:\Dropbox\!Backup\ , тогда моя команда такая:

    Mysql -uroot < h:\Dropbox\!Backup\all-databases.sql

    Дождитесь завершения импорта - если файл большой, то процесс может затянуться.

    Переход с MySQL на MariaDB без сохранения баз данных

    Остановите службу MySQL и удалите её из автозагрузки:

    Net stop mysql c:\Server\bin\mysql-8.0\bin\mysqld --remove

    Удалите папки C:\Server\bin\mysql-8.0\ (бинарные файлы) и C:\Server\data\DB\data\ (базы данных).

    Распакуйте скаченный архив с MariaDB, переименуйте папку в mariadb и переместите в C:\Server\bin\ .

    Переместите папку C:\Server\bin\mariadb\data\ в папку C:\Server\data\DB\ .

    В папке C:\Server\bin\mariadb\ создайте файл my.cnf и скопируйте в него:

    Datadir="c:/Server/data/DB/data/"

    Для установки и запуска службы выполните команды:

    C:\Server\bin\mariadb\bin\mysqld --install net start mysql

    Начиная с версии Debian 9 популярную систему управления базами данных MySQL заменила MariaDB. Данная СУБД является ответвлением от MySQL созданная ее первоначальными разработчиками, которые оказались недовольны лицензионной политикой Oracle и испытывали опасения, что MySQL может стать более закрытым продуктом. MariaDB является полностью совместимой с MySQL, а это значит, что замена произойдет максимально прозрачно и все приложения, которые работали с MySQL также будут работать с MariaDB. А мы же рассмотрим некоторые особенности этого перехода.

    Прежде всего скажем, что все команды, инструкции, скрипты и т.д. и т.п. которые раньше работали с MySQL будут также работать с MariaDB, никаких изменений вносить не нужно и многие пользователи просто могут не заметить, что работают с другой СУБД.

    Но есть и отличия, прежде всего они касаются безопасности и были внесены командой Debian. Одним из основных отличий является то, то MariaDB входящая в состав Debian 9 не запрашивает пароль root при установке . После чего пользователь остается в некоторой растерянности, а что делать дальше? Масла в огонь подливает тот факт, что большинство инструкций в сети интернет рассматривают управление MySQL сугубо через панель управления phpMyAdmin, и не имеющие навыков работы в командной строке пользователи оказываются в особо беспомощном состоянии.

    "Как установить пароль root в MariaDB " в разных вариациях является одним из популярных поисковых запросов, связанных с этой СУБД. Но не будем рубить с плеча, а сначала разберемся, что сделали разработчики Debian и для чего.

    Самой большой проблемой безопасности MySQL является то, что учетные данные для доступа к БД хранятся в конфигурационных файлах веб-приложений открытым текстом. С учетом того, что многие пользователи не заморачиваются и делают владельцем всех баз суперпользователя root - проблема становится довольно серьезной. А если учесть, что доступ к файлам веб-приложений может иметь достаточно широкий круг лиц, включая не только сотрудников, но и фрилансеров - становится совсем плохо.

    Поэтому в Debian для суперпользователя root в MariaDB предусмотрена аутентификация через UNIX-сокет и реализована она таким образом, что неограниченный доступ к MariaDB может получить только суперпользовтаель системы и только в режиме командной строки. С точки зрения безопасности это очень правильно, так как теперь сторонние пользователи и веб-приложения не смогут получить доступ с правами root, даже если они каким-то образом узнали пароль.

    Все это хорошо, но что делать обычному пользователю, который поставил MariaDB на свой сервер и хочет залить на нее дамп базы сайта? Прежде всего завести пользователя, лучше даже не одного. Для этого поднимем свои права в системе до root через su или sudo и выполним команду:

    Mysql -u root

    После чего вы окажетесь в командной строке MariaDB. Для того, чтобы создать нового пользователя выполним команду:

    create user "andrey" @ "localhost" identified by "password" ;

    В нашем примере мы создали пользователя andrey с паролем password .

    Теперь назначим ему права. Прежде всего явно заберем права на чужие базы:

    grant usage on *.* to "andrey"@"localhost";

    И выдадим полные права на базы с шаблоном имени andrey_basename, такой подход позволит автоматически давать права всем новым базам которые будет создавать пользователь.

    grant all privileges on `andrey\_%`.* to "andrey"@"localhost";

    Обратите внимание, что шаблон оборачивается символами грависа (`) , который находится на клавише с русской буквой Ё.

    Остается только перезагрузить привелегии и выйти из консоли MariaDB

    flush privileges;
    quit;

    После чего можно вернуться к привычным инструментам работы с MySQL/MariaDB, например, phpMyAdmin:


    Обратите внимание, что данный способ, в отличие от распространенных рекомендаций "включить root в MariaDB", позволяет сохранить повышенную безопасность системы, что важно, если доступ к ней будут иметь третьи лица. Также мы не советуем держать все базы под одним пользователем, в идеале один сайт (или иное приложение) - один пользователь, это позволит без лишних затрат времени и сил сменить пароль в случае его компрометации или ее потенциальной возможности (скажем вы привлекали для работ с сайтом фрилансера).

    Установка MariaDB из репозиториев разработчика

    Операционная система Debian имеет много достоинств, одно из них, за которое его больше всего любят - это стабильность. Настроил и забыл - это как раз про него, но оборотной стороной такого подхода является консервативность, многие пакеты имеют не столь свежие версии, как иногда хотелось бы. В настоящий момент вместе с Debian 9 поставляется MariaDB 10.1, в то время как текущими версиями являются 10.2 и 10.3.

    Поэтому если вам нужны какие-то новые функции MariaDB или вы просто хотите использовать последние стабильные версии софта, то можете установить MariaDB непосредственно из репозиториев разработчика. Сделать это несложно, но перед любым потенциально опасным действием следует сделать полную резервную копию вашего сервера.

    Для этого выполните в консоли сервера с правами суперпользователя следующую команду:

    Mysqldump -u root --all-databases > ~/my_backup.sql

    Эта команда сохранит все базы MariaDB, включая служебные, в файл my_backup.sql в директории /root и, если что-то пойдет не так, вы всегда сможете восстановить состояние вашего сервера на момент создания копии.

    Получить инструкции по установке можно на специальной странице официального сайта.

    Сделана она очень удобно: вы выбираете свой дистрибутив, его выпуск, версию СУБД и зеркало - после чего получаете готовую инструкцию для установки. Чтобы сэкономить вам время приведем ее здесь (мы будем устанавливать MariaDB 10.3 на Debian 9):

    Apt-get install software-properties-common dirmngr
    apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
    add-apt-repository "deb http://mirror.mephi.ru/mariadb/repo/10.3/debian stretch main"

    Чтобы вы понимали, что делаете кратко прокомментируем эти команды. Первая из них добавляет в систему нужные зависимости, вторая устанавливает ключ, которым подписаны пакеты и третья, наконец, добавляет в систему сам репозиторий.

    Теперь обновим список пакетов:

    Apt-get update

    и установим новую версию MariaDB:

    Apt-get install mariadb-server

    Обратите внимание, что пакетный менеджер корректно удалит предыдущую версию и установит новую, все базы данных при этом сохранятся и продолжат работать с новой версией MariaDB.

    Второй момент, при установке MariaDB от разработчиков инсталлятор попросит у вас задать пароль root, так как в этой версии аутентификация через UNIX-сокет не используется.

    Кого-то может это и порадует, но если вы успели понять и оценить все достоинства способа от разработчиков Debain, то возникнет резонный вопрос: а можно ли вернуть как было? Можно. Для этого откройте конфигурационный файл /etc/mysql/mariadb.conf.d/50-server.cnf и добавьте в секцию строку:

    Plugin-load-add = auth_socket.so

    Перезапустим СУБД:

    Service mysqld restart

    Попробуем войти из учетной записи обычного пользователя:

    Несмотря на то, что система спросит нас пароль и мы его правильно введем - в доступе нам будет все равно отказано. Повторим попытку через phpMyAdmin:

    И здесь успеха у нас не будет. Отлично! Теперь доступ с правами суперпользователя СУБД имеет только суперпользователь системы и нам не нужно беспокоиться, что пароль root MariaDB станет известен кому-либо.

    Похожие статьи