Настал черёд установки MySQL, предпоследнего элемента нашей LAMPы. Дело это непростое и кропотливое, так что налейте себе чашку ароматного кофе и приготовьтесь к длинной беседе.

В дальнейшем мы теперь всегда будем считать, что установленная нами в предыдущих статьях виртуальная машина с гостевой ОС Debian Linux 11 (bullseye) запущена и у вас открыт сеанс работы с ней по протоколу ssh, в котором запущен менеджер файлов Midnight Cоmmander (помним, что в любой момент можно с помощью комбинации клавиш {Ctrl, O} переключаться в режим командной строки и обратно).

Первое, что нам нужно будет сделать, это скачать последний стабильный дистрибутив (apt-репозиторий) СУБД MySQL с официального сайта проекта, зайдя на него по адресу: https://dev.mysql.com/downloads/repo/apt:

mysql setup 1

Обращаем внимание на то, что указано на  этой странице касательно проверки целостности пакета и понимаем, что нам нужно установить пакет GnuPG, что и делаем в первую очередь с помощью команды: apt install gnupg

Скачать дистрибутив можно при помощи веб-браузера в Windows, но тогда он попадёт к вам на хост-машину, а потом его придётся перекидывать по протоколу SFTP на гостевую (например, при помощи очень полезной утилиты WinSCP), поэтому здесь мы применим более правильный в данной ситуации подход и скачаем файл прямо из командной строки Linux командой: wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.23-1_all.deb

mysql setup 2

Теперь полученный файл нужно будет распаковать при помощи команды: dpkg -i mysql-apt-config_0.8.23-1_all.deb, запуск которой приводит к появлению следующего экрана:

mysql setup 3

где можно выбрать другой (кластерный) вариант установки сервера, но мы оставляем всё как есть, выбираем “ОК” и нажимаем “Enter”:

mysql setup 4

Результатом работы команды dpkg является появление нового файла mysql.list в локальном репозитории apt, расположееном в каталоге /etc/apt/sources.list:

mysql setup 5

Всё, теперь можно устанавливать СУБД MySQL при помощи команды: apt install mysql-server, предварительно запустив на всякий случай сначала: apt update и apt upgrade, если это окажется необходимым:mysql setup 6

Заметим здесь, что мощнейшая современная утилита APT (Advanced Packaging Tool). пришедшая на смену apt-get, на самом деле как бы сама может скачивать и распаковывать пакеты Debian при помощи специальных ключей, и многие даже не знают,  что делает она это обращаясь к тем же wget и dpkg. Наша цель показать вам как можно глубже анатомию процессов и думается, что на примере устанвоки MySQL нам это удастся.

Итак, запускаем установку и на предупреждение о том, готовы ли вы к тому, что этот процесс отнимет у вас 290 мегабайт на жёстком диске, конечно же отвечаем согласием “д”:mysql setup 7

На вопрос о пароле для пользователя root придумываете и вводите сложный пароль и подтвержаете его, а на вопрос о методе аутентификации по умолчанию соглашаетесь с использованием плагина, работающего на основе более безопасного алгоритма хеширования, версии 2 (SHA-256), хотя WordPress и не поддерживает его. Позже мы объясним, как решать это вопрос.

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

Для начала проверим, всё ли действительно хорошо с нашей установкой:mysql setup 8

Если у вас также, как и у нас, значит всё отлично, если нет, то смотрим журнал ошибок, находящийся в файле /var/log/mysql/error.log. Если там указана проблема, то ищем её решение в интернет.

Заметим, что при нормальном завершении установки журнал должен выглядеть следующим образом:mysql setup 9

Итак, мы установили MySQL и убедились, что установилось всё корректно. Теперь нам будет нужен удобный инструмент, заменяющий (а точнее дополняющий) возможности стандартного клиента mysql, работающего из командной строки. В последних версиях СУБД в состав дистрибутива входит MySQL Workbench – мощная программа с графическим интерфейсом, пользоваться которой можно с любой машины, откуда доступен установленный нами сервер по нужному порту (по умолчанию 3306).

Давайте скачаем MySQL Workbench, скопируем скачанный файл mysql-workbench-community-8.0.30-winx64.msi в наш каталог дистрибутивов D:Distrib.dskmysql setup 10

после чего запустим и проведём установку по умолчанию в режиме complete (полная установка) на нашей host-машине. Результатом будет следующее окно, где будет сказано, что MySQL Workbench не смог найти ни одного запущенного MySQL-сервера и это правильно, так как по умолчанию к серверу есть доступ только с той машины, на которой он установлен и, кроме того, к нему нельзя соединяться удалённо при помощи логина root:mysql setup 11

Первое, что нам нужно будет сделать для того, чтобы преодолеть данные препятствия (а они необходимы для улучшения безопасности), так это открыть доступ к серверу с хост-машины, а можно и вообще с вашей внутренней сети 192.168.1/24, если вы уверены в том, что в ней не будут работать злоумышленники (здесь, в случае домашней сети, речь о ваших домочадцах, а в случае рабочей – о ваших сотрудниках). Для этого с помощью Midnight Commander находим на сервере файл /etc/mysql/mysql.conf.d/mysqld.cnf, нажимаем F4 для вызова редактора, добавляем в конец файла  строку: bind-address=0.0.0.0 и сохраняем изменения:mysql setup 12

Второе, что нужно будет сделать – это завести с помощью утилиты командной строки другой логин, который не такой очевидный, как root, и дать ему все права на управление СУБД. Делается это следующей последовательностью действий:

1) запускаем команду linux shell: mysql --user=root --password, вводя в диалоге пароль пользователя root, что позволяет зайти нам на сервер под логином root (здесь имеется ввиду пользователь MySQL, а не Linux) и получить полный доступ к выполнению всех команд MySQL;
2) запускаем уже sql-команду : create user 'ваш-логин'@'%' identified by 'ваш-пароль';
3) проверяем, появился ли пользователь sql-командой: SELECT User, Host FROM mysql.user;
4) даём все права на все базы sql-командой: grant all privileges on *.* to 'ваш-логин'@'%' with grant option;
5) инициируем права sql-командой: flush privileges;
6) возвращаемся в linux-shell командой exit;

Отметим, что излагаемый здесь материал подразумевает, что вы находитесь в DMZ (то есть к вам с внешней сети невозможно зайти по любому порту, кроме 80) и вам нет смысла устанавливать и настраивать Firewall (Брэндмауэр), однако, если он у вас всё же стоит, то нужно будет обязательно открыть порт 3306.

Теперь перезапускаем MySQL-сервер командой: service mysql restart
и возвращаемся к окну MySQL Workbench, где нужно будет выбрать меню Database-Connect to Database или сразу нажать комбинацию клавиш {Ctrl,U}: mysql setup 13

В открывшемся окне нужно ввести правильно логин, который вы создавали вышеприведённой sql-командой create user и адрес виртуальной машины (у нас 192.168.1.11), а далее в следующем окне пароль пользователя, и если всё, что описано выше, было сделано верно, то вы успешно соединитесь с СУБД и получите основное рабочее окно MySQL Workbench:mysql setup 14

Здесь можно видеть, что у нас ещё нет созданных баз данных (схем), но если нажать на кнопку “Users and Privileges”, то появится список пользователей, среди которых будут созданные нами и автоматически созданные системой. Для нас тут будет представлять интерес разница между пользователем root и пользователем, под именем которого мы соединились с MySQL:mysql setup 15

Как видите, у пользователя root разрешение только на вход с localhost, а у созданного вами пользователя %, что означает отовсюду.

Кроме того, когда мы будем создавать пользователей для конкретных баз данных, то будем выбирать Authentification Type: “Standard”, поскольку, как уже говорилось, WordPress не поддерживает SHA 2.

Обратим ещё ваше внимание но то, что если нажать на кнопку “Server Status”, то можно увидеть подробную информацию о состоянии сервера MySQL, что бывает очень полезным.

Также заметим, что MySQL Workbench – достаточно новая программа-клиент MySQL и пока ещё сыровата, что проявляется в разного рода “странностях” при работе с ней. Если у вас такое произошло, произведите обновление вида или повторно соединитесь. Коме того, рекомендуется постоянно обновлять это приложение. В любом случае, не забывайте, что у вас всегда есть в распоряжении инструменты командной строки.

На этом мы заканчиваем статью об установке и настройке СУБД MySQL, но к материалу, изложенному здесь будем ещё не раз возвращаться, когда речь пойдёт об установке конкретных сайтов, построенных на CMS WordPress.