Этот материал был создан при поддержке и спонсорстве компании iBase.ru, которая разрабатывает инструменты Firebird SQL для предприятий и предоставляет сервис технической поддержки для Firebird SQL.
Материал выпущен под лицензией Public Documentation License https://www.firebirdsql.org/file/documentation/html/en/licenses/pdl/public-documentation-license.html
Введение
Эта статья предназначена прежде всего для тех, кто планирует в ближайшем будущем обновить СУБД Firebird до версии 5.0. Многие администраторы всё ещё используют Firebird 2.5, но планируют обновиться до версии 5.0. Именно поэтому здесь описан процесс миграции с Firebird версий 2.5, 3.0 и 4.0.
Спонсором написания статьи «Руководство по миграции на Firebird 5.0» является IBSurgeon (iBase.ru) (https://www.ib-aid.com, https://www.ibase.ru): техническая поддержка и инструменты разработчика и администратора для СУБД Firebird.
Ручная установка Firebird 5.0 в Windows
Далее описан процесс установки из zip архива. Даже если вы устанавливаете Firebird из специального инсталляционного пакета, вам всё равно может потребоваться изменить некоторые настройки после установки. Кроме того, ручная установка позволяет установить несколько версий Firebird на одной машине.
Скачайте архив соответствующей разрядности и распакуйте его в директорию, в которой будет размещён сервер Firebird.
Далее необходимо создать пользователя SYSDBA. Для тех администраторов, которые мигрируют с Firebird 3.0 или 4.0, это операция не нова. В Firebird 2.5 и ранее после установки пользователь SYSDBA существовал всегда и имел пароль по умолчанию masterke, который надо было сразу же менять.
Инициализация SYSDBA
Начиная с Firebird 3.0 пользователь SYSDBA не инициализирован по умолчанию (для плагина управления пользователями SRP), поэтому необходимо явно создать пользователя и указать ему пароль. Это можно сделать двумя способами: с использованием консольного инструмента для выполнения интерактивных запросов isql.exe
и консольного инструмента для управления базой данных безопасности gsec.exe
.
Note
|
Замечание
В зависимости от размещения Firebird эти утилиты могут потребовать запуска с привилегиями администратора. |
Инициализация SYSDBA с помощью ISQL
Запустите инструмент для выполнения интерактивных запросов isql.exe
.Соединитесь с базой данных безопасности в режиме встроенного сервера, указав при этом пользователя SYSDBA без пароля.Пользователя SYSDBA ещё не существует в базе данных безопасности, но в embedded режиме пользователь и его пароль не проверяется, и Firebird доверяет любому указанному имени пользователя.Выполните SQL запрос для создания пользователя SYSDBA:
CREATE USER SYSDBA PASSWORD '<password>';
Пользователь SYSDBA инициализирован, можно выходить из интерактивного режима.
c:\Firebird\5.0>isql security.db -user SYSDBA Database: security.db, User: SYSDBA SQL> CREATE USER SYSDBA PASSWORD 'm8ku234pp'; SQL> exit;
Инициализация SYSDBA с помощью GSEC
Запустите gsec.exe
, указав пользователя SYSDBA и базу данных security.db
.Выполните команду для добавления пользователя SYSDBA:
add SYSDBA -pw <password>
c:\Firebird\5.0>gsec -user SYSDBA -database security.db * gsec is deprecated, will be removed soon * GSEC> add SYSDBA -pw m8ku234pp GSEC> quit
Warning
|
Предупреждение
Инструмент |
Конфигурация
Перед тем как установить и запустить Firebird как службу необходимо выбрать режим работы сервера.
Режим сервера
По-умолчанию Firebird будет стартовать в режиме SuperServer. Если вы хотите чтобы сервер запускался в другой архитектуре, то необходимо изменить значение параметра ServerMode в firebird.conf
. Раскомментируйте его (удалите решётку) и установите нужный режим: Super, SuperClassic или Classic.
ServerMode = Classic
Авторизация из клиентских библиотек Firebird 2.5
В Firebird 5.0 по умолчанию используется безопасная парольная аутентификация (SRP). Клиенты Firebird 2.5 и более ранние версии использовали традиционную аутентификацию (Legacy_Auth), которая отключена в Firebird 5.0 по-умолчанию, поскольку не является безопасной.
Для поддержки традиционной аутентификации необходимо изменить следующие параметры AuthServer, UserManager и WireCrypt.
AuthServer = Srp256, Srp, Legacy_Auth UserManager = Srp, Legacy_UserManager WireCrypt = Enabled
После вышеперечисленных манипуляций у нас будет активно два менеджера пользователей, по умолчанию активен первый в списке UserManager.
Important
|
Важно
Одноименные пользователи в разных менеджерах пользователей — это разные пользователи и у них могут быть разные пароли.Это относится и к SYSDBA и владельцу базы данных. |
Note
|
Если вам не нужна поддержка безопасной парольной аутентификации (SRP), то удалите из |
Ранее мы уже создали SYSDBA в менеджере пользователей SRP. В Legacy_UserManager SYSDBA уже существует, причём со стандартным паролем masterkey, который необходимо изменить. Сделаем это c использованием инструмента isql
. В операторе ALTER USER
необходимо обязательно указать менеджер пользователей Legacy_UserManager.
c:\Firebird\5.0>isql security.db -user SYSDBA Database: security.db, User: SYSDBA SQL> ALTER USER SYSDBA SET PASSWORD 'er34gfde' USING PLUGIN Legacy_UserManager; SQL> exit;
Установка часового пояса соединения по умолчанию
Начиная с Firebird 4.0 доступны новые типы даты и времени с поддержкой часовых поясов.
Даже если вы не собираетесь в ближайшее время использовать типы с часовыми поясами, то необходимо учитывать, что выражения CURRENT_TIMESTAMP и CURRENT_TIME теперь возвращают типы данных с часовыми поясами. Существует режим совместимости, который позволяет преобразовать типы с часовыми поясами в типы без часовых поясов. Однако такое преобразование может работать неверно, если часовой пояс соединения выставлен неправильно.
Обычно часовой пояс сеанса задаётся на стороне клиента. Если часовой пояс на стороне клиента не выставлен, то по умолчанию используется часовой пояс операционной системы.Вы также можете выставить часовой пояс сеанса по умолчанию с помощью параметра конфигурации DefaultTimeZone
.
DefaultTimeZone = Europe/Moscow
Одновременный запуск нескольких экземпляров Firebird
Здесь предполагается, что вы хотите запустить экземпляры разных версий Firebird, каждая из которых установлена в своём каталоге.
Для одновременного запуска нескольких экземпляров Firebird необходимо развести их по разным портам tcp (если, конечно, слушатель запущен в режиме прослушивания TCP/IP).Для этого необходимо изменить в firebird.conf
параметр RemoteServicePort.
Например, если у вас уже есть один сервер, который слушает порт 3050, то необходимо установить любой другой свободный порт, например 3051. В этом случае в строке подключения необходимо будет указывать новый порт (кроме случая когда приложению и клиенту Firebird доступен firebird.conf
с измененным номером порта по умолчанию).
RemoteServicePort = 3051
Также необходимо установить уникальные значения параметра IpcName для каждого экземпляра сервера СУБД. Это позволит избежать сообщения об ошибках в firebird.log
. Эти ошибки не являются критическими, если вы не пользуетесь протоколом XNET. Однако, если он используется, то стоит учесть, что этот параметр придётся изменять и на стороне клиента через DPB.
Установка и запуск Firebird как службы
Утилита instsvc.exe записывает, удаляет или меняет информацию о запуске сервера в базе сервисов операционной системы. Кроме того, она позволяет управлять запуском и остановкой сервиса.
Если запустить её без параметров, то будет выведена справка по командам и параметрам.
instsvc Usage: instsvc i[nstall] [ -a[uto]* | -d[emand] ] [ -g[uardian] ] [ -l[ogin] username [password] ] [ -n[ame] instance ] [ -i[nteractive] ] sta[rt] [ -b[oostpriority] ] [ -n[ame] instance ] sto[p] [ -n[ame] instance ] q[uery] r[emove] [ -n[ame] instance ] '*' denotes the default values '-z' can be used with any other option, prints version 'username' refers by default to a local account on this machine. Use the format 'domain\username' or 'server\username' if appropriate.
Important
|
Важно
Утилита instsvc должна запускаться в консоли с административными привилегиями (запуск консоли от имени администратора). |
Для установки сервиса необходимо ввести команду
instsvc install
В этом случае Firebird будет установлен в качестве службы с именем "Firebird Server – DefaultInstance". Эта служба будет запускаться автоматически при старте ОС, под учётной записью LocalSystem, предназначенной для служб.
Если необходимо чтобы было установлено несколько экземпляров Firebird работающих как службы, то необходимо задать им разные имена с помощью опции -n
instsvc install -n fb50
Для запуска службы воспользуйтесь командой
instsvc start
Если служба была установлена с именем отличным от умолчательного, то необходимо воспользоваться переключателем -n
instsvc start -n fb50
Для остановки службы воспользуйтесь командой
instsvc stop
Если служба была установлена с именем отличным от умолчательного, то необходимо воспользоваться переключателем -n
instsvc stop -n fb50
Для удаления сервиса необходимо ввести команду
instsvc remove
Если служба была установлена с именем отличным от умолчательного, то необходимо воспользоваться переключателем -n
instsvc remove -n fb50
Для просмотра всех служб Firebird установленных в системе воспользуйтесь командой
instsvc query
Firebird Server - fb30 IS installed. Status : running Path : C:\Firebird\3.0\firebird.exe -s fb30 Startup : automatic Run as : LocalSystem Firebird Server - fb40 IS installed. Status : running Path : C:\Firebird\4.0\firebird.exe -s fb40 Startup : automatic Run as : LocalSystem Firebird Server - fb50 IS installed. Status : running Path : C:\Firebird\5.0\firebird.exe -s fb50 Startup : automatic Run as : LocalSystem
Использование install_service.bat и uninstall_service.bat
Для упрощения процедуры установки и удаления служб в ZIP архиве в комплекте с Firebird поставляются два BAT файла: install_service.bat
и uninstall_service.bat
.
В этом случае процедура установки Firebird в качестве сервиса выглядит следующим образом
install_service.bat
В этом случае процедура удаления службы Firebird выглядит следующим образом
uninstall_service.bat
Если необходимо задать службе имя отличное от умолчательного, то указываем это имя в качестве аргумента
install_service.bat fb50
Если служба была установлена с именем отличным от умолчательного, то указываем это имя в качестве аргумента
uninstall_service.bat fb50
Установка клиента
Если речь идёт об установке только клиентской части, то обязательно требуется файл fbclient.dll
. Клиент Firebird 5.0 обязательно требует наличия установленного Microsoft Runtime C++ 2015-2022 соответствующей разрядности. Если данная библиотека не установлена, то можно скопировать дополнительные библиотеки, которые поставляются в ZIP архиве под Windows msvcp140.dll
и vcruntime140.dll
(для 64-разрядной установки ещё и vcruntime140_1.dll
).
Желательно, чтобы рядом с fbclient.dll
был расположен файл сообщений firebird.msg
. Большинство сообщений об ошибках уже содержатся в fbclient.dll
, однако если вы собираетесь пользоваться консольными утилитами файл firebird.msg
обязательно должен присутствовать.
В отличие от Firebird 2.5 и Firebird 3.0, клиентской библиотеки так же требуются файлы ICU (icudt63.dll
, icuin63.dll
, icuuc63.dll
и icudt63l.dat
). Ранее ICU библиотека требовалась только серверу. Теперь она может потребоваться клиентской части, если вы собираетесь работать с типами данных TIMESTAMP WITH TIME ZONE
и TIME WITH TIME ZONE
. ICU библиотека также требуется при вызове функций UtilInterface::decodeTimeTz()
и UtilInterface::decodeTimestampTz()
.
Note
|
Замечание
В Windows 10 может использоваться ICU библиотека поставляемая вместе с операционной системой. |
Если необходимо сжатие трафика при работе по TCP/IP, то потребуется библиотека zlib1.dll
.
Вам может потребоваться библиотека plugins/chacha.dll
, если вы собираетесь использовать плагин шифрования трафика ChaCha. Этот плагин, используется по умолчанию начиная с Firebird 4.0, поскольку он находится первым списке значений в параметре конфигурации WireCryptPlugin = ChaCha, Arc4
.
Note
|
Замечание о загрузке плагинов
Однако, есть важная особенность. Такое поведение может сыграть с вами злую шутку. Дело в том что 64-разрядный инсталлятор располагает в папке Error loading plugin ChaCha. Module C:\Firebird\5.0\plugins/ChaCha exists but can not be loaded. unknown Win32 error 193. В данном случае 32-разрядный Для исправления данной ошибки достаточно поместить в папку |
Библиотека fbclient.dll
, а также другие файлы клиентской библиотеки, должны располагаться либо рядом с приложением, либо в одной из директорий в которой производится поиск, например добавленной в PATH
или системной директории для размещения общедоступных библиотек (system32
или SysWOW64
).
Important
|
Важно
Размещение клиентской библиотеки в |
Утилита instclient
Для развёртывания клиентской библиотеки Firebird в системном каталоге Windows воспользуйтесь командой
instclient install fbclient
Important
|
Важно
Утилита instclient не копирует в системный каталог никаких файлов кроме |
Установка embedded версии
Начиная c версии Firebird 3.0, embedded версия не распространяется отдельно. Вы можете использовать один и тот же набор файлов и как сетевой сервер и как встраиваемый (embedded) сервер. Но, если требуется встраиваемый комплект минимального размера, то структура файлов и каталогов для Firebird 5.0 embedded следующая:
-
intl
-
fbintl.conf
-
fbintl.dll
-
-
plugins
-
engine13.dll
-
-
firebird.conf
-
icudt63l.dat
-
fbclient.dll
-
ib_util.dll
-
icudt63.dll
-
icuin63.dll
-
icuuc63.dll
-
msvcp140.dll
-
vcruntime140.dll
-
vcruntime140_1.dll
-
firebird.msg
При необходимости вы также можете скопировать исполняемые файлы утилит fbsvcmgr.exe
, fbtracemgr.exe
, gbak.exe
, gfix.exe
, gstat.exe
, isql.exe
, nbackup.exe
.Если вы собираетесь использовать gbak
вместе с переключателем -zip
, то потребуется также библиотека zlib1.dll
.
Note
|
Замечание
Для тех кто мигрирует с Firebird 2.5 следует учитывать 2 момента:
|