Установка СУБД Firebird 5 в Ubuntu 22.04

В комплекте с DataExpress идут встроенные серверы баз данных Firebird 2.5 и 5. Они позволяют работать с базой данных одному пользователю. Но если планируется совместная работа с базой данных множества пользователей, то вам необходимо установить дополнительное программное обеспечение — СУБД Firebird.

Обычно СУБД Firebird устанавливают на отдельный компьютер, выполняющий роль сервера. Это не обязательно должен быть мощный сервер, достаточно бюджетного офисного ПК.

В данном руководстве мы будем устанавливать Firebird на виртуальный сервер VDS под управлением операционной системы Ubuntu 22.04. Это обеспечит нам доступ к базе данных через интернет, где бы мы ни находились.

Устанавливать будем Firebird версии 5. Данную версию следует устанавливать, если у вас база данных в новом формате DXDB.

Если у вас база данных в старом формате FDB, то воспользуйтесь утилитой DataExpress Convert Tool, чтобы преобразовать базу к новому формату.

Предполагается, что вы только что установили систему. Первым делом обновим систему:

# apt update
# apt upgrade

Перед установкой Firebird установим требуемый пакет:

# apt install libtommath-dev

Скачаем и установим Firebird в каталог /opt/firebird:

# cd /opt
# wget https://github.com/FirebirdSQL/firebird/releases/download/v5.0.2/Firebird-5.0.2.1613-0-linux-x64.tar.gz
# tar xvzf Firebird-5.0.2.1613-0-linux-x64.tar.gz
# cd Firebird-5.0.2.1613-0-linux-x64
# ./install.sh

В процессе установки вам будет предложено установить пароль SYSDBA. Если вы только пробуете работать с удаленной базой, лучше задать стандартный пароль masterkey. В этом случае настраивать подключение к базе данных в DataExpress будет чуть проще, т. к. программа знает про стандартный пароль. В дальнейшем, для безопасности, пароль стоить поменять (об этом чуть позже).

Обязательная настройка Firebird после установки!

В отличии от СУБД Firebird 2.5, новую версию необходимо немного настроить для корректной работы программы DataExpress. Откройте в редакторе файл firebird.conf:

# mcedit /opt/firebird/firebird.conf

Далее найдите и раскомментируйте (уберите символ решетки) следующие параметры:

ReadConsistency = 0
DataTypeCompatibility = 2.5

После сохранения перезапустите firebird:

# systemctl restart firebird

Загрузка базы данных на сервер

Загрузите базу данных на сервер любым удобным способом. Это можно сделать с помощью программ FileZilla, WinSCP или через панель управления вашего сервера (если установлена).

Например, создайте каталог /opt/bases и загрузите в него базу. В нашем примере это будет демобаза DEMO_DB.DXDB.

Чтобы СУБД Firebird могла получить доступ к файлу, назначьте владельцем файла пользователя firebird:

# cd /opt/bases
# chown firebird DEMO_DB.DXDB

Может быть такое, что Firebird все равно не может работать с базой. При попытке подключения к базе программа сообщает об ошибке: Permission denied. В этом случае проверьте, чтобы у всех каталогов в пути были права на выполнение. Если этих прав нет, то установите их:

# chmod 755 /opt/bases

Подключение к базе данных

Теперь настроим подключение к базе данных в программе DataExpress. Запускаем программу и открываем менеджер подключений: меню Файл — Подключиться (или клавиша F6). Создание нового подключения

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

Обратите внимание как задается строка подключения. Краткий формат строки подключения: IP-адрес:ПолныйПутьКБазеДанных или ИмяДомена:ПолныйПутьКБазеДанных. Более подробно об этом здесь.

Настройка алиасов

В целях безопасности и удобства вы можете задать алиас (псевдоним) базы данных. Тогда вместо пути к базе данных вам достаточно будет указать алиас. Алиасы прописываются в файле databases.conf:

# cd /opt/firebird
# mcedit databases.conf

Добавим в конец файла строку:

demodb = /opt/bases/DEMO_DB.DXDB

Теперь в строке подключения достаточно будет ввести: 18.43.8.70:demodb Алиас в строке подключения

Меняем порт сервера Firebird

Также в целях безопасности рекомендуют изменить стандартный порт Firebird 3050 на какой-нибудь другой. Для примера пусть будет порт 3090. Для этого нужно отредактировать файл firebird.conf:

# mcedit /opt/firebird/firebird.conf

Находим параметр RemoteServicePort, раскомментируем его (убираем символ решетки) и вводим порт 3090. Сохраняем файл и перезапускаем службу firebird:

# systemctl restart firebird

Теперь, когда мы поменяли порт, строка подключения немного изменится. После IP-адреса или имени хоста через слэш указывается порт:

18.43.8.70/3090:demodb

Изменение пароля SYSDBA

Введите в терминале следующие команды:

# cd /opt/firebird/bin
# ./gsec -user SYSDBA -password masterkey -modify SYSDBA -pw <ваш новый пароль>

Не забудьте в параметрах подключения указать новый пароль SYSDBA, иначе получите ошибку при подключении. Ввод пароля SYSDBA в настройках подключения

Настройка подключение клиентов Firebird 2.5 к серверу Firebird 5

Если вы счастливый пользователь Линукс и запускаете DataExpress через Wine, вам это может пригодиться. Клиент Firebird 5 (fb5\fbclient.dll) не работает в Wine, остается только пользоваться клиентом версии 2.5. Но для этого нужно настроить сервер, чтобы он принимал соединения от старых клиентов.

Для этого в файл /opt/firebird/firebird.conf внесите следующие изменения:

AuthServer = Srp256, Legacy_Auth
UserManager = Srp, Legacy_UserManager
WireCrypt = Enabled

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

# systemctl restart firebird

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

Дополнительная база безопасности

В Firebird 5 есть возможность задать для каждой базы данных свою базу безопасности. Таким образом у каждой базы данных будет свой пароль SYSDBA.

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

# cd /opt/firebird
# cp security5.fdb mysecurity.fdb

Задайте для файла права доступа:

# chown firebird mysecurity.fdb
# chmod 660 mysecurity.fdb

Для нашего алиаса укажем новую базу безопасности.

# mcedit /opt/firebird/databases.conf
demodb = /opt/bases/DEMO_DB.DXDB
{
  SecurityDatabase = /opt/firebird/mysecurity.fdb
}
<code>
С помощью утилиты isql назначим пароль:
<code>
# cd /opt/firebird/bin
# ./isql
SQL> connect demodb;
SQL> alter user sysdba set password 'Qwerty123';

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

SQL> alter user sysdba set password 'Qwerty123' using plugin Legacy_UserManager;

Выходим:

SQL> exit;