Пару лет назад я писал статью про установку MariaDB 10.4 на Debian 9. С тех пор утекло много времени, уже давненько вышла MariaDB 10.5 и пора написать про ее установку. В установке и настройке MariaDB 10.5 есть несколько нюансов, поэтому будьте внимательны.
Итак, давайте попробуем установить MariaDB 10.5 на чистую систему Debian 10 (Buster).
На момент написания статьи актуальна версия MariaDB 10.5.10
Полный список изменений можно найти на официальной странице.
Исходные данные: ОС Debian 10 (Buster);
Задача: Установить MariaDB 10.5.10 с минимум телодвижений и произвести базовую настройку БД;
Установка MariaDB 10.5.x на Debian 10:
1. Установка необходимых доп. пакетов:
apt-get update apt-get install dirmngr wget -y
2. А теперь та самая простая магия, о которой мало где написано — скачивание и запуск скрипта установки репозитария:
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup && chmod a+x mariadb_repo_setup ./mariadb_repo_setup --mariadb-server-version="mariadb-10.5"
Результат работы скрипта:
[info] Checking for script prerequisites. [info] Repository file successfully written to /etc/apt/sources.list.d/mariadb.list [info] Adding trusted package signing keys... [info] Running apt-get update... [info] Done adding trusted package signing keys
Для информации 1:
Если Вы хотите установить версию ниже, например 10.4, то запустите скрипт с опцией —mariadb-server-version=mariadb-10.4
Для информации 2:
Данный скрипт проанализирует вашу систему, установит GPG-ключи и добавит репозитарий в файл /etc/apt/sources.list.d/mariadb.list
Скрипт является официальным и поддерживает дистрибутивы: RHEL/CentOS 7 & 8, Ubuntu 16.04 LTS (xenial) & 18.04 (bionic) & 20.04 LTS (focal), Debian 9 (stretch) & 10 (buster) и SLES 12 и 15
Скрипт так же поддерживает установку репозитариев для разных версий MariaDB, MaxScale и MariaDB Tools, Вы можете скачать его и посмотреть все опции запуска:
./mariadb_repo_setup --help
P.S. Для любителей все делать руками есть удобный портал, где можно более гибко выбрать нужный репозитарий в зависимости от географического положения вашего сервера.
3. Обновляем список пакетов:
apt-get update
4. Устанавливаем последнюю версию MariaDB 10.5.x:
apt-get install mariadb-server -y
В процессе установки инсталлятор попросит нас придумать пароль пользователя root, на данном этапе мы его оставим пустым и поменяем потом.
После установки проверим статус работы MariaDB:
# systemctl status mariadb ● mariadb.service - MariaDB 10.5.10 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 Wed 2021-05-26 20:00:20 CEST; 10s ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 17897 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 12 (limit: 2296) Memory: 80.3M CGroup: /system.slice/mariadb.service └─17897 /usr/sbin/mariadbd May 26 20:00:21 myserver /etc/mysql/debian-start[17916]: information_schema May 26 20:00:21 myserver /etc/mysql/debian-start[17916]: mysql May 26 20:00:21 myserver /etc/mysql/debian-start[17916]: performance_schema May 26 20:00:21 myserver /etc/mysql/debian-start[17916]: Phase 6/7: Checking and upgrading tables May 26 20:00:21 myserver /etc/mysql/debian-start[17916]: Processing databases May 26 20:00:21 myserver /etc/mysql/debian-start[17916]: information_schema May 26 20:00:21 myserver /etc/mysql/debian-start[17916]: performance_schema May 26 20:00:21 myserver /etc/mysql/debian-start[17916]: Phase 7/7: Running 'FLUSH PRIVILEGES' May 26 20:00:21 myserver /etc/mysql/debian-start[17916]: OK May 26 20:00:21 myserver /etc/mysql/debian-start[18166]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables
Проверим порт и работу демона. Обратите внимание, что начиная с версии 10.5 все исполняемые файлы, начинающиеся со слова «mysql» переименованы с использованием слова «mariadb». Старые имена пока сохранены в форме символических ссылок, но нужно уже привыкать использовать вместо mysql слово mariadb.
# netstat -ltupn | grep maria tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 17897/mariadbd # ps -ef | grep [m]aria mysql 17897 1 0 20:00 ? 00:00:00 /usr/sbin/mariadbd
А так же попробуем подключиться к БД с помощью команды mariadb:
# mariadb Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 44 Server version: 10.5.10-MariaDB-1:10.5.10+maria~buster 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 [(none)]> SELECT version(); +----------------------------------------+ | version() | +----------------------------------------+ | 10.5.10-MariaDB-1:10.5.10+maria~buster | +----------------------------------------+ 1 row in set (0.000 sec)
Мы успешно подключились к серверу 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-сокета.
Далее вопрос:
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.
Чтобы проверить, что под root с пустым паролем нас не пустят нам нужно залогиниться под непривилегированным пользователем и попробовать выполнить (когда у нас спросят пароль root, мы нажмем Enter, тем самым пароль будет пустым):
mgrigorev@myserver:~$ mysql -u root -p ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Как мы видим с пустым паролем root нас больше не пускают.
А теперь так же находясь под непривилегированным пользователем на запрос пароля введем его:
mgrigorev@myserver:~$ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 57 Server version: 10.5.10-MariaDB-1:10.5.10+maria~buster 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)]>
Отлично, все получилось.
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Профессионально занимаюсь системным администрированием Linux -серверов и баз данных (MySQL, PostgreSQL) на протяжении последних 24 лет.