notby.NET Logo

Установка MariaDB 10.11 в FreeBSD 14

В качестве базы данных веб-сервера будет использоватся MariaDB последней стабильной версии. MariaDB это база данных которая отделилась от MySQL с сохранением совместимости по API, командам и библиотекам MySQL. Будет показан подробный процесс установки и начальной настройки сервера MariaDB. Установка MySQL 8 в FreeBSD 14 происходит примерно аналогично, поэтому отдельной статьи для MySQL не будет.

1. Установка MariaDB

1.1. Установка через пакеты

Производим поиск доступных версий пакетов для установки

pkg search mariadb
FreeBSD поиск пакетов mariadb командой "pkg search mariadb".

MariaDB 10.11 является LTS версией со сроком поддержки до февраля 2028. Выбираем mariadb1011-server или если необходимо другую версии…

Устанавливаем MariaDB сервер

pkg install mariadb1011-server
FreeBSD установка пакета mariadb1011-server командой "pkg install mariadb1011-server". Список того что будет установлено.

Вместе с сервером MariaDB будет установлен клиент MariaDB и необходимые библиотеки и программы. Дожидаемся окончания установки.

1.2. Установка через порты

Переходим в каталог баз данных в портах

cd /usr/ports/databases/

Производим поиск в каталоге доступных версий MariaDB для установки

ls -l | grep mariadb
Переход в каталог /usr/ports/databases/ и вывод каталогов с именем mariadb командой "ls -l | grep mariadb".

MariaDB 10.11 является LTS версией со сроком поддержки до февраля 2028.

Переходим в каталог порта mariadb1011-server

cd /usr/ports/databases/mariadb1011-server/

Устанавливаем MariaDB

make install clean
FreeBSD установка и сборка порта mariadb1011-server командой "make install clean". Конфигурации сборки mariadb1011-server-10.11.6_1.

Изменяем параметры сборки если необходимо. Вместе с сервером MariaDB будет установлен клиент MariaDB.

2. Автозагрузка и запуск MariaDB

MariaDB используется совместимость с MySQL, поэтому необходимо использовать команды для автозагрузки и запуска как в MySQL.

Добавляем в автозагрузку

sysrc mysql_enable="YES"

Или вручную открываем файл /etc/rc.conf и добавляем строку mysql_enable="YES"

Запускаем MariaDB сервер

service mysql-server start
Успешно запущен MariaDB сервер в FreeBSD командой "service mysql-server start".

Сервер MariaDB успешно запущен.

Был создан каталог /var/db/mysql для баз данных MariaDB и два пользователя без пароля root@localhost и mysql@localhost с авторизацией от FreeBSD пользователя root и mysql соответственно.

3. Скрипт безопасности mariadb-secure-installation

mysql_secure_installation является символьной ссылкой на скрипт безопасности mariadb-secure-installation.

После установки MariaDB необходимо запускать скрипт mariadb-secure-installation для повышения безопасности и начальной настройки сервера базы данных. Я опишу вопросы которые скрипт будет задавать и как я отвечал на них.

Запускаем скрипт безопасности

mariadb-secure-installation

Далее скрипт будет задавать вопросы в следующий последовательности:


Enter current password for root (enter for none):

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

Оставляем поле пустым и нажимаем Enter


Switch to unix_socket authentication [Y/n]

Переключится на unix_socket авторизацию? Начинаю с версии MariaDB 10.4 авторизация через unix_socket используется и выключена по умолчанию.

Отвечаем Y, оставляем unix_socket авторизацию включенной.


Change the root password? [Y/n]

Изменить пароль root пользователя? Если оставить пароль пустым, то зайти в MariaDB от root пользователя можно будет только из root консоли. Это безопасно и полностью достаточно для работы с MariaDB сервером.

Если необходимо от root пользователя удаленно подключение к серверу базы данных, то необходимо задать пароль, иначе не получится подключится.

Отвечаем n, пароль root не меняем и оставляем пустым.


Remove anonymous users? [Y/n]

Удалить анонимных пользователей? Анонимные пользователя создаются для упрощения установки и далее не нужны.

Отвечаем Y, чтобы удалить анонимных пользователей.


Disallow root login remotely? [Y/n]

Запретить авторизацию root удаленно?

Отвечаем Y, запрещаем удаленное подключение от root пользователя.


Remove test database and access to it? [Y/n]

Удалить тестовую базу данных и доступ к ней? Тестовая базы данных создается только для тестирования.

Отвечаем Y, чтобы удалить тестовую базу данных.


Reload privilege tables now? [Y/n]

Обновить таблицы привилегий сейчас?

Отвечаем Y, чтобы применить изменения привилегий на шагах выше.


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

4. Подключение к серверу MariaDB

После установки и использование скрипта безопасности проверим подключение к серверу баз данных.

Заходим от root или переключаем на него

su -

Подключаемся к серверу MariaDB

mariadb
Успешное подключение к серверу MariaDB командой "mariadb" в консоли FreeBSD.

Прошло успешное подключение пользователя root@localhost через unix_socket авторизацию. MariaDB сервер успешно установлен и готов к работе, теперь создаем необходимые базы данных, пользователей, привилегии и так далее…

Если для root был установлен пароль, то можно подключатся от любого пользователя в системе командой

mariadb -u root -p

5. Удаленное подключение к серверу MariaDB

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

5.1. Включение возможности удаленного подключения

По умолчанию к серверу MariaDB можно подключатся только через Unix сокеты и localhost. У меня возникают задачи когда необходимо через внутреннюю сеть подключится к серверу баз данных.

Открываем файл конфигурации сервера MariaDB и изменяем значение параметра bind-address на необходимое

nano /usr/local/etc/mysql/conf.d/server.cnf
# Выбираем необходимое значение:
# Значение по умолчанию (localhost)
bind-address = 127.0.0.1
# Слушать все сетевые интерфейсы и адреса
bind-address = 0.0.0.0
# Слушать конкретный IP-адрес
bind-address = 192.168.0.1

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

Перезагружаем MariaDB сервер

service mysql-server restart

Проверяем какие адреса слушается MariaDB сервер

sockstat | grep mariadb
USER     COMMAND     PID  FD  PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
mysql    mariadbd    3365 17  tcp4   192.168.0.1:3306      *:*
mysql    mariadbd    3365 18  stream /var/run/mysql/mysql.sock

Как можно видеть, к серверу MariaDB можно подключатся через unix сокет /var/run/mysql/mysql.sock и к IP-адресу 192.168.0.1 по 3306 порту.

5.2. Создание пользователя для удаленного подключения

Подключаемся к серверу MariaDB

mariadb

Создаем пользователя для возможности удаленного подключения

CREATE USER 'remote'@'192.168.0.5' IDENTIFIED BY 'Пароль_пользователя';

remote –  имя пользователя, 192.168.0.5 – IP адрес с которого сможет подключится пользователь.

Вместо конкретного IP можно указать подгруппу адресов, например 'remote'@'192.168.0.0/255.255.255.0', тогда подключения возможно с диапазона адресов от 192.168.0.0 до 192.168.0.255.
Если вместо IP адреса указать % символ ('remote'@'%'), то можно подключится с любого IP адреса.

Разрешаем все привилегии для пользователя remote@192.168.0.5

GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.5';

Пользователь создан и для него выданы все привилегия для создания баз данных, таблиц, пользователей и так далее… Это удобно, чтобы работать с базой данных удаленно через программы с графическим интерфейсом, например DBeaver.

5.3. Проверка удаленного подключения

Так как в примере выше был создан пользовать remote с возможностью подключения с 192.168.0.5 адреса, то подключится получится только с удаленного компьютера который имеет IP адрес 192.168.0.5 внутри сети.

Подключаемся удаленно к MariaDB серверу из консоли Linux. Необходимо, что бы был установлен клиент MariaDB или MySQL

mysql -h 192.168.0.1 -u remote -p

192.168.0.1 – IP адрес сервера, remote – имя пользователя. Параметр -p означает что будет запрошен пароль пользователя.

Вводим пароль пользователя remote@192.168.0.5 и успешно подключаемся.

Также можно настроить подключение через программу управления базами данных c графическим интерфейсом, например DBeaver. Наживаем в ней кнопку проверки подключения после настройки соединения.

DBeaver - Окно Connection test. Успешное подключение к удаленному MariaDB серверу.

Успешное подключение к удаленному серверу MariaDB.

6. Отключение обслуживание сети

Если для подключения к серверу MariaDB используется только подключение через unix сокеты, то можно полностью отключить поддержку сети(TCP/IP). Тогда сервер перестанет слушать адрес 127.0.0.1 (localhost) по 3306 порту.

Открываем файл конфигурации server.cnf

nano /usr/local/etc/mysql/conf.d/server.cnf

В секцию [server] добавляем параметр

skip-networking = 1
В текстовом редакторе nano открыт файл /usr/local/etc/mysql/conf.d/server.cnf и добавлена опция "skip-networking = 1" в секцию [server].

Перезагружаем MariaDB сервер

service mysql-server restart

Проверяем что MariaDB сервер слушает только unix-сокет

sockstat | grep mariadb
USER     COMMAND     PID  FD  PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
mysql    mariadbd    4828 20  stream /var/run/mysql/mysql.sock

Теперь подключится к серверу возможно только через /var/run/mysql/mysql.sock сокет.