Установка MariaDB 10.11 в FreeBSD 14
В качестве базы данных веб-сервера будет использоватся MariaDB последней стабильной версии. MariaDB это база данных которая отделилась от MySQL с сохранением совместимости по API, командам и библиотекам MySQL. Будет показан подробный процесс установки и начальной настройки сервера MariaDB. Установка MySQL 8 в FreeBSD 14 происходит примерно аналогично, поэтому отдельной статьи для MySQL не будет.
1. Установка MariaDB
1.1. Установка через пакеты
Производим поиск доступных версий пакетов для установки
pkg search mariadb
MariaDB 10.11 является LTS версией со сроком поддержки до февраля 2028. Выбираем mariadb1011-server или если необходимо другую версии…
Устанавливаем MariaDB сервер
pkg install mariadb1011-server
Вместе с сервером MariaDB будет установлен клиент MariaDB и необходимые библиотеки и программы. Дожидаемся окончания установки.
1.2. Установка через порты
Переходим в каталог баз данных в портах
cd /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
Изменяем параметры сборки если необходимо. Вместе с сервером MariaDB будет установлен клиент MariaDB.
2. Автозагрузка и запуск MariaDB
MariaDB используется совместимость с MySQL, поэтому необходимо использовать команды для автозагрузки и запуска как в MySQL.
Добавляем в автозагрузку
sysrc mysql_enable="YES"
Или вручную открываем файл /etc/rc.conf и добавляем строку mysql_enable="YES"
Запускаем MariaDB сервер
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
Прошло успешное подключение пользователя 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. Наживаем в ней кнопку проверки подключения после настройки соединения.
Успешное подключение к удаленному серверу 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
Перезагружаем 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 сокет.