Установка MariaDB 10.6 на CentOS 7

06 июля 2021 года, ровно через 1 год после релиза MariaDB 10.5 вышла первая стабильная версия MariaDB 10.6.3, ключевых улучшений достаточно много, например реализация схемы sys в которой собрана коллекция из представлений, функций и процедур для анализа операций с СУБД, о самых интересных на русском языке можно почитать здесь.

Давайте попробуем установить новую версию на чистую систему CentOS 7.

Полный список изменений в MariaDB 10.6.3 Вы можете найти на официальной странице, частичный перевод на русском языке можно почитать на этой странице.

На официальном сайте так же есть инструкция по обновлению MariaDB 10.5 до версии 10.6, но это тема отдельной статьи.

Исходные данные: ОС CentOS 7.9;
Задача: Установить MariaDB 10.6.3 с минимум телодвижений и произвести базовую настройку БД;

Установка MariaDB 10.6.3 на CentOS 7:

1. Установка вспомогательных пакетов

yum update -y
yum install -y wget net-tools

2. Добавление репозитория MariaDB

wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup && chmod a+x mariadb_repo_setup
./mariadb_repo_setup --mariadb-server-version="mariadb-10.6"

Для информации:
Данный скрипт проанализирует Вашу систему, установит GPG-ключи и добавит репозитарий в файл /etc/yum.repos.d/mariadb.repo
Скрипт является официальным и поддерживает дистрибутивы: RHEL/CentOS 7/8, Ubuntu 16.04 LTS (xenial), 18.04 LTS (bionic), & 20.04 LTS (focal), Debian 9 (stretch) & 10 (buster) и SLES 12 & 15
Скрипт так же поддерживает установку репозитариев для разных версий MariaDB, MaxScale и MariaDB Tools, Вы можете скачать его и посмотреть все опции запуска:

./mariadb_repo_setup --help

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

3. Установка последней версии MariaDB 10.6.x

yum install -y MariaDB-server

4. Запуск MariaDB

systemctl start mariadb.service

Добавим запуск MariaDB при старте ОС:

systemctl enable mariadb.service

После запуска проверим статус работы MariaDB:

# systemctl status mariadb
● mariadb.service - MariaDB 10.6.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Fri 2021-07-09 09:27:25 EDT; 29s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 3561 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─3561 /usr/sbin/mariadbd

Jul 09 09:27:25 myserver mariadbd[3561]: 2021-07-09  9:27:25 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
Jul 09 09:27:25 myserver mariadbd[3561]: 2021-07-09  9:27:25 0 [Note] InnoDB: 10.6.3 started; log sequence number 42161; transaction id 14
Jul 09 09:27:25 myserver mariadbd[3561]: 2021-07-09  9:27:25 0 [Note] Plugin 'FEEDBACK' is disabled.
Jul 09 09:27:25 myserver mariadbd[3561]: 2021-07-09  9:27:25 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Jul 09 09:27:25 myserver mariadbd[3561]: 2021-07-09  9:27:25 0 [Note] InnoDB: Buffer pool(s) load completed at 210709  9:27:25
Jul 09 09:27:25 myserver mariadbd[3561]: 2021-07-09  9:27:25 0 [Note] Server socket created on IP: '0.0.0.0'.
Jul 09 09:27:25 myserver mariadbd[3561]: 2021-07-09  9:27:25 0 [Note] Server socket created on IP: '::'.
Jul 09 09:27:25 myserver mariadbd[3561]: 2021-07-09  9:27:25 0 [Note] /usr/sbin/mariadbd: ready for connections.
Jul 09 09:27:25 myserver mariadbd[3561]: Version: '10.6.3-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Jul 09 09:27:25 myserver systemd[1]: Started MariaDB 10.6.3 database server.

Проверим порт и работу демона. Обратите внимание, что начиная с версии 10.5 все исполняемые файлы, начинающиеся со слова «mysql» переименованы с использованием слова «mariadb». Старые имена пока сохранены в форме символических ссылок, но нужно уже привыкать использовать вместо mysql слово mariadb.

# netstat -ltupn | grep maria
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      3561/mariadbd
tcp6       0      0 :::3306                 :::*                    LISTEN      3561/mariadbd

# ps -ef | grep [m]aria
mysql     3561     1  0 09:27 ?        00:00:00 /usr/sbin/mariadbd

ВАЖНО! Обратите внимание на то, что MariaDB принимает соединения на всех сетевых интерфейсах. Если Ваш сервер имеет внешний белый IP адрес, то есть доступен через Интернет, то и MariaDB так же может быть доступна через Интернет, что может быть довольно опасным.

Чтобы в дальнейшем избежать проблем с неконтролируемым доступом я рекомендую настроить firewall на Вашем сервере и ограничит доступ на порт 3306 или перенастроить MariaDB так, чтобы она открывала порт только на localhost (127.0.0.1).

Чуть ниже (в п.5) мы настроим безопасность MariaDB.

Пока давайте попробуем подключиться к БД с помощью команды mariadb:

# mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.3-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

MariaDB [(none)]> SELECT version();
+----------------+
| version()      |
+----------------+
| 10.6.3-MariaDB |
+----------------+
1 row in set (0.000 sec)

Мы успешно подключились к серверу MariaDB.

5. Настройка безопасности MariaDB

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

Обратите внимание, что раньше скрипт настройки назывался mysql_secure_installation, начиная с 10.6 он называется mariadb-secure-installation
Запускаем мастер настройки:

mariadb-secure-installation

На вопрос:
Enter current password for root (enter for none):
нажимаем Enter, текущий пароль root у нас пустой.

Далее вопрос:
Switch to unix_socket authentication [Y/n]
вводим Y, если мы хотим оставить возможность аутентификации через unix-сокет — это нововведение появилось в 10.4, плагин позволяет использовать присутствующие в системе учётные записи для подключения к СУБД при помощи локального unix-сокета.

Далее вопрос:
Change the root password? [Y/n]
вводим Y, да мы хотим поменять пароль root
и далее придумываем СЛОЖНЫЙ пароль root

Далее вопрос:
Remove anonymous users? [Y/n]
вводим Y, мы хотим удалить анонимного пользователя.

Далее вопрос:
Disallow root login remotely? [Y/n]
вводим Y, да мы хотим запретить подключаться под пользователем root с удаленных машин.

Далее вопрос:
Remove test database and access to it? [Y/n]
вводим Y, да мы хотим удалить тестовую базу test

И последний вопрос:
Reload privilege tables now? [Y/n]
вводим Y, да мы хотим перезагрузить таблицу привилегий для вступления их в силу.

После этого мы выполнили минимальные меры по защите нашего экземпляра MariaDB.

Теперь настроим MariaDB чтобы она принимала соединения только на интерфейсе localhost (127.0.0.1), для этого откроем файл /etc/my.cnf.d/server.cnf и в секции [mysqld] пропишем bind-address=127.0.0.1

Часть файла конфигурации /etc/my.cnf.d/server.cnf:

...
# this is only for the mysqld standalone daemon
[mysqld]
bind-address=127.0.0.1
...

После этого перезапустим MariaDB:

systemctl restart mariadb

Проверим на каких интерфейсах MariaDB принимает соединения:

# netstat -ltupn | grep maria
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      3977/mariadbd

Отлично, то что нужно!

Теперь проверим, что под root с пустым паролем нас не пустят нам нужно залогиниться под непривилегированным пользователем и попробовать выполнить (когда у нас спросят пароль root, мы нажмем Enter, тем самым пароль будет пустым):

mgrigorev@myserver:~$ mariadb -u root -p
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Как мы видим с пустым паролем root нас больше не пускают.

А теперь так же находясь под непривилегированным пользователем на запрос пароля введем его:

mgrigorev@myserver:~$ mariadb -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.6.3-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Отлично, все получилось.

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


Подписаться
Уведомить о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Федор
Федор
1 год назад

Спасибо Михаил!

1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x