Установка firebird database server x64 linux. Установка субд firebird. Редактирование базы Firebird

Firebird SQL Server — сервер баз данных основанный на открытом исходном коде InterBase 6.0. Дистрибутивы Firebird существуют под Windows, Linux, Unix, Solaris, MacOS, под 32-х и 64-х битную архитектуру. Firebird SQL Server распространяется бесплатно и не имеет лицензионных ограничений.

Какую версию Firebird выбрать?

На сегодняшний момент новейшая версия — Firebird 3.0. Стабильная версия Firebird 2.5.

Установка Firebird — выбор типа сервера

Сервер Firebird SQL доступен в 3-х вариантах:

  • Firebird Super Server
  • Firebird Classic Server
  • Firebird Embedded

Firebird Super Server

Firebird Super Server — все клиентские подключения обслуживаются одним серверным процессом, имеется общий клиентский кеш. За счет этого достигается меньший расход ресурсов на обслуживание клиентов. Недостатком Firebird Super Server является отсутствие возможности задействовать несколько процессоров для работы Firebird сервера.

Firebird Classic Server

Firebird Classic Server — на каждое клиентское подключение создает отдельный серверный процесс. Архитектура Firebird Classic Server более надежна, т.к. сбой одного серверного процесса не вызывает отказ в обслуживании всех клиентов. Кроме того, Firebird Classic позволяет задействовать многопроцессорную архитектуру. При установке Firebird вы можете выбрать между версиями Firebird Super Server или Firebird Classic Server .

Firebird Embedded

Firebird Embedded Server — предназначен для встраиваемых баз данных. Состоит из одной dll — fbembed.dll , которая включает в себя клиент и сервер Firebird Super Server. Firebird Embedded не требует установки на клиентской рабочей станции. Достаточно просто скопировать fbembed.dll и еще несколько файлов клиенту на компьютер.

Недостаток Firebird Embedded — это невозможность одновременного подключения к одной БД нескольких клиентов. После успешного подключения Firebird Embedded блокирует файл базы данных для монопольного доступа.

Firebird Embedded Server распространяется отдельным дистрибутивом.

Если затрудняетесь с выбором

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

Начало работы с Firebird

Для знакомства с Firebird можно использовать тестовую базу данных employee.fdb. Она входит в установочный комплект Firebird и расположена в папке Program Files\Firebird\Firebird\examples\empbuild\ .

Создание новой базы Firebird

Для создания пустой базы Firebird:

  • запустите утилиту C:\Program Files\Firebird\Firebird\bin\isql.exe
  • выполните инструкцию создания базы данных:
Use CONNECT or CREATE DATABASE to specify a database SQL> CREATE DATABASE ‘localhost:d:\temp\test.fdb’ user ‘SYSDBA’ password ‘masterkey’ DEFAULT CHARACTER SET WIN1251;

В ISQL каждое выражение завершается точкой с запятой.

Проверить подключение можно, выполнив запрос:

SQL> select MON$DATABASE_NAME from MON$DATABASE;

Если все сделано правильно, SQL запрос вернет путь к подключенной базе данных:

========================================================================== D:\TEMP\TEST.FDB

Безопасность Firebird

  • Firebird хранит всех пользователей в одной служебной базе данных security.fdb.
  • Начиная с Firebird 2.1 реализована поддержка SSPI аутентификации средствами Windows. Администраторы домена на уровне БД определяются как суперпользователи SYSDBA.
  • В Firebird 3.0 планируется реализовать возможность хранения пользователей в клиентской базе данных.

Пользователь SYSDBA. Смена пароля по умолчанию

SYSDBA — это административный пользователь Firebird с исключительными правами. Пароль по умолчанию: masterkey . Для того чтобы сменить пароль, используйте утилиту gsec из состава Firebird:

C:\Program Files\Firebird\bin>gsec GSEC> modify SYSDBA -pw NEW_PASS

При помощи утилиты gsec можно создавать, удалять, модифицировать и просматривать пользователей. Полный список команд можно получить, набрав help.

Подключение к Firebird из клиентского приложения

Для начала скачайте и установите пакет IBProvider Professional Edition .

IBProvider Professional Edition — это набор COM-компонент, которые позволяют работать с любыми версиями Firebird и InterBase. Компоненты поддерживаются большинством средств разработки: Delphi, C++ Builder, Visual C++, .Net Framework, C#, Visual Basic, VBScript, VBA и др.

Для проверки подключения к Firebird напишем простой сценарий на языке VBScript . Создайте пустой файл с расширением vbs и вставьте в него следующий код, указав правильный путь к базе данных:

Dim cn, cmd, rs, i Set cn = CreateObject ("ADODB.Connection") cn.Open "Provider=LCPI.IBProvider.3;" & _ "Data Source=localhost:d:\temp\test.fdb; " & _ "User Id=SYSDBA;" & _ "password=masterkey;" & _ "ctype=win1251;" & _ "auto_commit=true" set rs = cn.execute("select * from MON$ATTACHMENTS") do while not rs.EOF for i=0 to rs.Fields.Count - 1 wscript.echo rs(i).Name & "=" & rs(i).Value next rs.MoveNext loop rs.close cn.close

Запустите скрипт на выполнение в режиме командной строки, и вы увидите список активных подключений к БД.

Firebird и VBScript, Visual Basic, VBA

Для доступа к Firebird и InterBase из VBScript , VBA , Visual Basic используется библиотека ADO (ActiveX Data Objects). Множество примеров работы с этой библиотекой вы найдете в документации: примеры InterBase, Firebird VBScript, VBA, Visual Basic .

Firebird и Delphi

IBProvider предлагает несколько способов работы с InterBase и Firebird из Delphi:

  • dbGo (ADO Express) компоненты, работающие через библиотеку ADO.
  • прямой доступ к COM-интерфейсам ADO, минуя компоненты dbGo.
  • прямой доступ к COM-интерфейсам OLE DB при помощи сторонних VCL-компонент (OLE DB Direct/OLE DB Express).

Firebird и.Net

Для доступа к Firebird из.Net используется библиотека ADO.NET. На сайте IBProvider опубликовано большое пошаговое руководство, посвященное работе с Firebird в Visual Studio .Net (ADO.NET) .

Дополнительные материалы по теме:

Firebird и C++

В состав IBProvider Professional Edition входит C++ библиотека, которая предоставляет самый быстрый способ работы с OLE DB провайдерами из Visual C++ 2005-2008, а так же из C++ Builder.

Редактирование базы Firebird

В пустой базе данных необходимо создать таблицы, связи между таблицами, первичные ключи, индексы, хранимые процедуры, генераторы и другие объекты. Для редактирования баз данных Firebird вы можете использовать утилиту isql.exe.

Создаем таблицу:

SQL> CREATE TABLE cross_rate CON> (CON> from_currency VARCHAR(10) NOT NULL, CON> to_currency VARCHAR(10) NOT NULL, CON> conv_rate FLOAT NOT NULL, CON> update_date DATE, CON> CON> PRIMARY KEY (from_currency, to_currency) CON>);

Вставляем одну запись и делаем выборку из таблицы:

SQL> INSERT INTO cross_rate VALUES (‘Dollar’, ‘CdnDlr’, 1.3273, ’11/22/93′); SQL> SELECT * from cross_rate; FROM_CURRENCY TO_CURRENCY CONV_RATE UPDATE_DATE ============= =========== ============== =========== Dollar CdnDlr 1.3273000 1993-11-22

Помимо isql существует различные графические утилиты администрирования Firebird .

Утилиты администрирования Firebird

FlameRobin

FlameRobin — поддерживает Firebird. Кросс-платформенная архитектура. Есть редактор SQL, DDL, управление пользователями.
Лицензия: open source, распространяется бесплатно.
Сайт:

IBExpert

IBExpert — Поддерживает Firebird, InterBase, Yaffil. Редакторы DDL и DML. Визуальный построитель запросов. Автозавершение кода, Metadata Extractor, а так же множество других возможностей.
Лицензия: Бесплатный для exUSSR, для остальных: от 179 евро.

Обратите внимание на то, что упоминаемая в некоторых руководствах утилита instreg , которая используется для регистрации (и разрегистрации) инсталляции Firebird в реестре Windows, в случае использования на одном сервере нескольких экземпляров Firebird 2.5 использоваться категорически не должна. В противном случае корректная совместная работа нескольких экземпляров Firebird на одном сервере может быть нарушена. Если в системе всё же по какой-то причине раньше использовалась утилита instreg, или просто выполнялась установка «дефолтного» экземпляра Firebird с помощью стандартного инсталлятора (exe -файл), в ходе работы которого вызывается instreg, то перед запуском нескольких служб с разными экземплярами Firebird, нужно предварительно удалить информацию об инсталляции Firebird с помощью команды instreg remove .

В нашем примере настройка служб Firebird выполняется на чистой системе и без применения инсталлятора, поэтому предварительное выполнение команды instreg remove нам не потребуется.

Итак, приступим к регистрации служб экземпляров Firebird.

Открываем командную строку с правами Администратора, переходим в каталог с исполняемыми файлами первого экземпляра Firebird и выполняем команду регистрации службы экземпляра с помощью утилиты instsvc (запросить информацию о ключах утилиты и её версии можно запуском с опцией -z ):

Cd /d D:\FBInst1\Bin\bin instsvc -z instsvc install -superserver -demand -name Instance1

В команде регистрации мы используем следующие опции:

    install – установка нового экземпляра Firebird

    superserver – режим работы экземпляра (один из трёх возможных режимов для Firebird 2.5)

    demand – создаваемая служба настраивается на ручной запуск (это нужно для того, чтобы перед запуском службы выполнить её предварительную натсройку)

    name – имя экземпляра Firebird, который будет обслуживаться создаваемой службой.

В ходе выполнения последней команды мы должны получить сообщение об успешной регистрации службы.

По аналогии выполняем регистрацию службы второго экземпляра Firebird, обязательно предварительной перейдя в соответствующий каталог:

Cd /d E:\FBInst2\Bin\bin instsvc install -superserver -demand -name Instance2

Теперь перейдём в оснастку управления службами Windows (services.msc ) и убедимся в том, что в перечне служб появились две новых службы и обе они находятся в незапущенном состоянии.

Откроем свойства службы первого экземпляра Firebird и на вкладке General настроим автоматический тип запуска службы

Переключимся на вкладку Log On и выберем ранее созданную нами сервисную учётную запись gMSA , от имени которой должна выполняться данная служба. Обратите внимание на то, что так как используется учётная запись gMSA, в конце имени обязательно должен присутствовать символ «$», а поле с паролем при этом следует оставить пустым (ОС сервера будет сама аутентифицировать данную учётную запись в домене). При сохранении настроек по кнопке Apply мы получим сообщение о том, что для указанной нами учётной записи автоматически добавлено право входа в систему в качестве службы (Log On As A Service )

Переключимся на вкладку Recovery и настроим автоматический перезапуск службы в случае её краха. Правила перезапуска, разумеется, каждый настраивает по своему усмотрению. В нашем примере оставлено две попытки перезапуска, а третья и последующие попытки отключены (чтобы не вводить службу в бесконечный цикл попыток перезапуска в случае каких-то существенных проблем).

По аналогии настраиваем вторую службу, которая была создана для второго экземпляра Firebird. Для второй службы все настройки могут быть аналогичными за исключением учётной записи, от имени которой она будет запускаться. После того, как параметры запуска служб экземпляров Firebird настроены, попробуем выполнить их запуск.

Службы должны запускаться без длительных задержек и ошибок.

Убедимся в том, что после запуска служб от каждого из экземпляров Firebird в системе появился TCP -прослушиватель для принятия клиентских подключений на ранее заданном порту.

Netstat -na | findstr 305

Не забываем открыть соответствующие порты в Windows Firewall. Оперативно сделать это можно, например, с помощью PowerShell:

New- NetFirewallRule -DisplayName "Firebird Server (Instance1)" - Direction "Inbound" ` - Protocol "TCP" - Action "Allow" - LocalPort "3051" New- NetFirewallRule -DisplayName "Firebird Server (Instance2)" - Direction "Inbound" ` - Protocol "TCP" - Action "Allow" - LocalPort "3052"

Теперь оба развёрнутых экземпляра Firebird можно считать запущенными и готовыми к работе.

Автоматизация магазина на базе сервера Firebird является экономически выгодной, поскольку, несмотря на свою бесплатность, это полноценный SQL сервер, достаточно мощный и надежный, чтобы удовлетворить потребности среднего холдинга.

В нашей практике система Storehouse Explorer на базе сервера Firebird использовалась для автоматизации холдинга из 50 магазинов по всей России. Размер базы данных превышал 30 Гб, база содержала информацию за 10 лет и одновременно обслуживала от 70 до 120 пользователей (проведение торговых операций и аналитика).

>> Скачать демо-версию <<

Установка сервера Firebird на UNIX имеет свои особенности, которые мы бы хотели отразить в данной статье.

Автоматизация магазина на базе сервера Firebird 2.5 на POSIX (UNIX, LINUX) платформах

Предисловие

В статье описывается установка сервера Firedird 2.5.2 в POSIX (Unix-подобных) операционных системах, таких как Linux, Unix.

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

  1. Для установки сервера Firebird Вам понадобятся права пользователя root.
  2. Если вы устанавливаете Firebird на Линукс, то прежде чем производить установку вы должны убедиться, что в системе имеется run-time библиотека libstdc++.so.5. Если это не так, то следует установить compat-glibc пакет (RedHat, CentOs, OpenSuse, Debian) или libstdc++5 пакет (Mandriva).
  3. Eсли вы планируете установку Firebird c архитектурой SuperServer на Линукс, который поддерживает новую POSIX модель потоков, то следует выбираль NPTL билд Firebird.

I. Выбор дистрибутива

Существует достаточно много дистрибутивов Firebird различных версий и разработанных для разных операционных систем.
На момент написания этой статьи доступен стабильный билд этого сервера версии 2.5.2, который может работать на
32-x и 64-х разрядных платформах Windows, LINUX и MacOSX.
Однако прежде чем выбрать нужный дистрибутив необходимо сделать небольшое отступление.
Существует несколько вариантов исполнения или вариантов архитектуры сервера Firebird, в именно Classic, SuperServer
и Еmbeded. Различаются они способом использования машинных и сетевых ресурсов. Не вдаваясь глубоко в подробности отметим, коротко, особенности этих архитектур:
Classic - формально можно описать формулой "n коннектов к базе - n процессов на сервере", т.е. каждый коннект к базе

запускает свой *процесс* на сервере. Работает это так. На POSIX платформах запускается [x]inetd демон, который
слушает порт (по умолчанию это порт 3050, но при необходимости, можно назначить другой). Этот демон запускает для каждого успешного коннекта *отдельный* процесс fb_inet_server. Под каждый процесс расходуются определенные ресурсы сервера, создается отдельный кеш памяти.

Более экономно расходует ресурсы компьютера архитектура SuperServer.
SuperServer можно коротко описать формулой "n коннектов к базе - один процесс и n *потоков* на сервере". В POSIX системах это процесс fbserver. Суперсервер - это многопоточное приложение, в отличие от архитектуры Classic. Каждое соединение обслуживается в отдельном потоке.
Embeded - это архитектура, которая работает в составе отдельного приложения и в обычном понимании не является "полным сервером", т.е. не предназначена для работы как сервер, который обслуживает множество коннектов.
Скорее всего, вы будете делать выбор между архитектурой Classic и Cуперсервер. Если нет возможности глубоко вдаваться в подробности, то можно сделать выбор произвольно. Формат самой базы данных никак не привязан к конкретной архитектуре Сlassic или Superserver и всегда есть возможность, в случае необходимости, переустановить сервер, выбрав другую архитектуру.
И хотя, скорее всего, вам подойдет любая архитектура из этих двух, есть мнение, что для новичков, которые только начали работать с Firebird, архитектура Classic более предпочтительна для изучения и экспериментов с Firebird, как более устойчивая к неверным действиям пользователя.
Заметим, что Суперсервер использует общий кэш памяти и может иметь некоторые преимущества в случае одновременной работы большого числа пользователей. Cуперсервер ограничен по размеру используемой оперативной памяти, на момент написания статьи он не может использовать память свыше 2Gb.
Архитектуре Classic можно также отдать предпочтение, если "железо" использует несколько процессоров и имеет значительную оперативную память (> 2 GB).
В данной статье не стоит задача подробного анализа и сравнения этих архитектур, более подробную информацию об этом можно найти в интернете.

II. Выбор метода установки

Для установки Firebird вы должны иметь права пользователя root.
Сервер Firebird относится к числу бесплатных продуктов, дистрибутив для его установки можно скачать с официального сайта Firebird Foundation www.firebird.org .
Дистрибутивы сформированы как файлы *.rpm или *.tar.gz, например:

FirebirdCS-2.5.2.26539-0.i686.rpm

FirebirdCS-2.5.2.26539-0.i686.tar.gz

Необходимо отметить, что не все сборки Linuх поддерживают rpm-установку, уточнить это можно в документации к платформе в разделе "Менеджер rpm-пакетов"("RPM Package Manager"). В таких случаях рекомендуется использовать "tar.gz" файлы.
В интернете есть описания ручных способов установки путем распаковки архива и копирования файлов, однако такие способы, при наличии инсталляторов от разработчика, не рекомендуются.

III. Установка сервера Firebird 2.5

Для примера, возьмем установку сервера архитектуры Classsic.
Войдите в систему под пользователем root.
Для инсталяции *.rpm файла следует набрать:

$rpm -ivh FirebirdCS-2.5.2.26539-0.i686.rpm

Для инсталяции *.tar.gz файла следует набрать:

$tar -xzf FirebirdCS-2.5.2.26539-0.i686.tar.gz

$cd FirebirdCS-2.5.2.26539-0.i686.tar.gz

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

  1. Будет сделана попытка остановить все работающие сервера Firebird.
  2. Если еще не созданы, будут созданы пользователь "firebird " и группа "firebird ".
  3. В каталог /opt/firebird будет установлено программное обеспечение, в каталоге /usr/lib будут созданы ссылки
  4. для библиотек, в каталог /usr/include будут помещены заголовки файлов.
  5. В каталог /etc/services будет добавлена запись gds_db для порта 3050, если такой записи еще нет.
  6. Будут добавлены localhost.localdomain и HOSTNAME в каталог /etc/gds_hosts.equiv .
  7. Если устанавливается SuperServer, то будет установлен только скрипт запуска сервера /etc/rc.d/init.d/firebird .
  8. Если устанавливается Classic, то будет установлен скрипт запуска /etc/xinet.d/firebird или, для некоторых младших версий inetd-систем, будет добавлена запись в /etc/inetd файл.
  9. Будут прописаны новые ссылки в /usr/bin для скрипта init.d и будет создана конфигурационная запись сервера Firebird в etc/rc.config .
  10. Будет выполнен старт сервера/службы и Firebird должен стартовать автоматически.
  11. Будет сгенерирован случайным образом пароль пользователя SYSDBA и записан в файл /opt/firebird/SYSDBA.password .
  12. Будет добавлен алиас для тестовой базы данных employee.fdb в aliases.conf.

На этом этапе можно проверить корректность установки сервера Firebird. Для этого нам потребуется пароль учетной записи SYSDBA, который можно извлечь из файла /opt/firebird/SYSDBA.password.
Наберем в командной строке:

$cd /opt/firebird/bin

$./isql -user sysdba -password

SQL>connect localhost:employee.fdb;

SQL>select * from sales;

По этим командам сервер Firebird соединяется с тестовой базой данных employee.fdb и извлекает все записи из таблицы sales.
Firebird сервер, по умолчанию, запускается от имени пользователя "firebird". Ранее, по умолчанию, сервер выполнялся от имени "root". Запуск сервера от имени "root" - не очень правильно с точки зрения безопасности , поскольку, у пользователя "root" самые высокие права в системе и он может создавать и удалять любые файлы и каталоги в пределах всей файловой системы. Такие права для сервера Firebird являются излишними, поэтому следует проверить и настроить конфигурацию сервера для работы от имени пользователя "firebird".

Для этого:

  1. пользователь "firebird" должен иметь права на запись в каталог, в котором будут создаваться базы данных.
  2. параметр DatabaseAccess из файла /opt/firebird/firebird.conf должен быть настроен таким образом, чтобы запретить доступ ко всем файлам и каталогам, за исключением тех, которые предназначены для хранения баз данных. Если в файле aliases.conf мы создаем алиас для файла, то в файле firebird.con мы должны дать к этому файлу доступ.
  3. рекомендуется (желательно, но не обязательно) всегда использовать алиасы для указания абстрактных ссылок на файлы баз данных, не указывая их конкретное физическое расположение.

На примере создания пустой базы данных test.fdb убедимся, что создание сервера Firebird прошло успешно.
Существует не один способ создания пустой базы, (например на клиенте, с помощью приложения IBExpert),
здесь предлагается самый простой способ, штатными средствами Firebird на сервере.
Каталог для размещения выберем var/firebird .
Итак, надо:
1. проверить наличие и при отсутствии создать каталог /var/firebird. Если владельцем этого каталога является не пользователь "firebird", то следует сменить владельца на "firebird":

$mkdir -p /var/firebird

$chown firebird:firebird /var/firebird

2. В файле /opt/firebird/firebird.conf добавить разрешение для создания базы в каталоге /var/firebird.

DatabaseAccess = Restrict /var/firebird

3. создать базу

$/opt/firebird/bin/isql -u SYSDBA - p

SQL>connect "/var/firebird/test.fdb";

В практической работе с сервером Firebird могут пригодиться некоторые инструменты:
- changeDBAPassword.sh - скрипт для смены пароля SYSDBA.
- createAliasDB.sh - скрипт для создания пустой базы данных, создания алиаса и его записи в aliases.conf;
Пример использования:

$createAliasDB.sh

IV. Если что-то пошло не так...

Если вдруг оказалось, что еще вчера сервер Firebird работал замечательно, а сегодня не запускается, или запускается, но не работает должным образом, то, возможно, решить проблему вам поможет изучение лога firebird.log.

V. Установка Firebird на платформах Solaris, FreeBSD, Debian

На момент написания статьи установка Firebird 2.5 для операционных систем Solaris, FreeBSD, Debian пока не доступна, используйте предыдущие версии Firebird, например 2.0.

(c) Милькевич Тарас
Polaris-Soft team,

Литература:

1. Firebird 2 Migration & Installation, Helen Borrie (Collator/Editor) 6 April 2008 - Document v. mi210_20 - for Firebird 2.1.
2. Мир Interbase. Архитектура, администрирование и разработка приложений баз данных в Interbase/Firebird/Yaffil. Издание 2-е, дополненное. Алексей Ковязин, Сергей Востриков, КУДИЦ-ОБРАЗ, Москва 2003.