Установка MariaDB 10.4 на Debian 9

18 июня 2019 года вышла первая стабильная версия MariaDB 10.4.6, ключевых улучшений достаточно много, самое интересное для меня это конечно же технология синхронной multi-master репликации Galera 4.

Давайте попробуем установить новую версию на чистую систему Debian 9 (Stretch).

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

Исходные данные: ОС Debian 9.9 (Stretch);
Задача: Установить MariaDB 10.4.6 с минимум телодвижений и произвести базовую настройку БД;

Установка MariaDB 10.4.6 на Debian 9:

1. Установка необходимых доп. пакетов:

apt-get update
apt-get install dirmngr curl -y

2. А теперь та самая простая магия, о которой нигде не написано — скачивание и запуск скрипта установки репозитария:

curl https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash

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

./mariadb_repo_setup --help

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

3. Обновляем список пакетов:

apt-get update

4. Устанавливаем последнюю версию MariaDB 10.4.x:

apt-get install mariadb-server -y

В процессе установки инсталлятор попросит нас придумать пароль пользователя root, на данном этапе мы его оставим пустым и поменяем потом.

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

# systemctl status mariadb
● mariadb.service - MariaDB 10.4.6 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Sun 2019-06-23 20:20:42 +05; 25s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 4107 (mysqld)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─4107 /usr/sbin/mysqld

Jun 23 20:20:42 debian mysqld[4107]: 2019-06-23 20:20:42 0 [Note] InnoDB: 10.4.6 started; log sequence number 139827; transaction id 21
Jun 23 20:20:42 debian mysqld[4107]: 2019-06-23 20:20:42 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Jun 23 20:20:42 debian mysqld[4107]: 2019-06-23 20:20:42 0 [Note] Plugin 'FEEDBACK' is disabled.
Jun 23 20:20:42 debian mysqld[4107]: 2019-06-23 20:20:42 0 [Note] InnoDB: Buffer pool(s) load completed at 190623 20:20:42
Jun 23 20:20:42 debian mysqld[4107]: 2019-06-23 20:20:42 0 [Note] Server socket created on IP: '127.0.0.1'.
Jun 23 20:20:42 debian mysqld[4107]: 2019-06-23 20:20:42 0 [Note] Reading of all Master_info entries succeeded
Jun 23 20:20:42 debian mysqld[4107]: 2019-06-23 20:20:42 0 [Note] Added new Master_info '' to hash table
Jun 23 20:20:42 debian mysqld[4107]: 2019-06-23 20:20:42 0 [Note] /usr/sbin/mysqld: ready for connections.
Jun 23 20:20:42 debian mysqld[4107]: Version: '10.4.6-MariaDB-1:10.4.6+maria~stretch-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
Jun 23 20:20:42 debian systemd[1]: Started MariaDB 10.4.6 database server.
# netstat -ltupn | grep mysql
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      4107/mysqld

# ps -ef | grep [m]ysql
mysql     4107     1  0 20:20 ?        00:00:00 /usr/sbin/mysqld

А так же попробуем подключиться к БД с помощью команды mysql (т.к. на этапе установки мы оставили пароль root пустым, то использовать опции -u root -p мы не будеи):

# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.4.6-MariaDB-1:10.4.6+maria~stretch-log mariadb.org binary distribution

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.

5. Теперь запустим мастер настройки безопасности:

mysql_secure_installation

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

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

Далее вопрос:
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.

К сожалению есть ложка дегтя, хоть на вопрос «Switch to unix_socket authentication [Y/n]» мы ответили N, но к сожалению аутентификация с использованием unix socket не выключилась для пользователя root подключающегося с localhost. Можно воспользоваться этой статьей и отключить плагин, но это грозит массой проблем, т.к. на данный метод аутентификации завязаны теперь многие вспомогательные и служебные скрипты в MariaDB.

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

[email protected]:~$ mysql -u root -p
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

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

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

[email protected]:~$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.4.6-MariaDB-1:10.4.6+maria~stretch-log mariadb.org binary distribution

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)]>

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

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


Хотите оставить комментарий?