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)]>
Отлично, все получилось.
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Профессионально занимаюсь системным администрированием Linux -серверов и баз данных (MySQL, PostgreSQL) на протяжении последних 24 лет.
Спасибо Михаил!