Установка Firebird Server Classic 1.5 на Linux Ubuntu 12 (64-бита)
В данной заметке расскажу как установить классический, уже устаревший сервер баз данных Firebird 1.5 на 64-битной операционной системе Linux.
Сейчас уже доступна версия Firebird 2.x, тем не менее бывает что есть старое программное обеспечение, написанное и оптимизированное под версию 1.5 и миграция на 2-ю ветку сервера может стать очень сложным и не дешевым удовольствием.
В таких случаях приходиться искать различные возможные варианты запуска старой версии сервера баз данных в новом окружении и на новом оборудовании.
Содержание:
Предыстория
Так случилось, что я столкнулся проблемой установки старой версии сервера баз данных на новую операционную систему (ОС). В компании работало программное обеспечение, которое разрабатывалось для версии Firebird 1.5.
Чтобы перейти на новую версию Firebird нужно переписывать и тестировать большую часть программного кода. Программистов партнера-разработчика бросает в дрожь только от одной мысли о переходе на Firebird 2.х, да и сама компания "жмет" денег на оборудование и ресурсы, часто доходит до маразма.
Пришлось искать выход из ситуации самостоятельно, что является далеко не редкостью. Будем устанавливать классическую версию Firebird 1.5 на свежей ОС GNU/Linux Ubuntu 12, 64-битная сборка (чтобы на сервере получить доступ к 8ГБ ОЗУ).
Установка Firebird
Предполагается что у вас уже установлена GNU/Linux Ubuntu версии 12 и выше, также твой сервер должен имеет выход в интернет.
Переходим в режим Бога (root):
$ sudo -i
password:
Обновим список доступных пакетов и сделаем апгрейд установленного программного обеспечения:
apt-get update
apt-get dist-upgrade
Установим набор библиотек для поддержки 32-битных программ в 64-битной среде, а также добавим необходимые утилиты и инструменты для компиляции сервера баз данных из исходного кода.
Важно: выполнять установку необходимо строго в указанной ниже последовательности, иначе сборка может завершиться с ошибками.
apt-get install libstdc++5
apt-get install openbsd-inetd
apt-get install lib32ncurses5
apt-get install ia32-libs
Переходим к компиляции Firebird 1.5 Classic из исходных кодов. Переходим на страничку загрузки пакетов и исходных кодов: http://www.firebirdsql.org/en/firebird-1-5/#Linux
С помощью Wget или другой программы закачки, скачиваем архив: FirebirdCS-1.5.6.5026-0.i686.tar.gz (Classic for Linux, compressed tarball). Это текущая версия на момент написания этой статьи, в любом случае качаем самый свежий архив.
Следующие команды выполнят распаковку архива и полную установку сервера FirebirdCS-1.5.6.5026:
tar xzvf FirebirdCS-1.5.6.5026-0.i686.tar.gz
cd FirebirdCS-1.5.6.5026-0.i686
./install.sh
По окончании сборки будет задан запрос на смену имени суперпользователя для БД. В целях безопасности настоятельно рекомендую сменить логин и пароль по умолчанию (SYSDBA, masterkey) на что-то другое, сложное к перебору.
Теперь, когда установка прошла успешно и без ошибок, необходимо прописать пути поиска бинарных файлов и утилит сервера БД, например чтобы можно было вызывать gbak (бекап/восстановление БД из консоли) и gfix(ремонт БД) без указания полного пути.
Для этого откроем в редакторе файл с настройками профиля:
nano /etc/profile
Добавляем в конец файла строчку:
PATH=$PATH:/opt/firebird/bin
Для выхода из редактора и сохранения изменений нажимаем CTRL+X, потом Y и ENTER. Чтобы изменения в консоли вступили в силу нужно перелогиниться.
На этом установка закончена.
Проверяем все ли работает
Переходим к проверке. Желательно перезагрузить сервер, чтобы убедиться что служба с сервером запустилась корректно.
reboot
Проверяем слушает ли сервер Firebird порт 3050:
netstat -na | grep 3050
Если строчка, приведенная ниже, присутствует - значит все в порядке, сервер готов принимать соединения:
tcp 0 0 0.0.0.0:3050 0.0.0.0:* LISTEN
Подключаемся с помощью Telnet к порту 3050 и проверяем ответит-ли нам сервер БД:
telnet localhost 3050
Если все работает то должны увидеть следующее:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Создадим тестовую пустую базу данных (логин и пароль по умолчанию). Для этого запустим интерактивную консоль ISQL:
isql -user SYSDBA -pass masterkey
Теперь выполним следующий SQL-запрос:
CREATE DATABASE '/tmp/TEST.FDB' page_size 8192;
Для выхода из интерактивного режима в консоль нужно набрать:
quit;
Пробуем подключиться к только что созданной базе данных:
isql -user SYSDBA -pass masterkey /tmp/TEST.FDB
Сделаем выборку данных из новой БД следующим запросом:
SELECT * FROM RDB$RELATIONS;
В результате на экран должно быть выведено множество данных, это означает что все связано и работает. Отсоединимся от базы и удалим тестовую БД чтобы не захламлять /tmp :
rm /tmp/TEST.FDB
В завершение
Теперь у вас есть рабочий сервер баз данных Firebird 1.5 на современной ОС Linux Ubuntu 64bit.
Полезные ресурсы:
Спасибо за мануал. Сделал как написано (даже 3 полных инсталляции).
Вот что не совпадает:
1) "isql -user SYSDBA -pass masterkey localhost" не работает потому что isql не находит, он хранится в /opt/firebird/bin
2) если то же самое запускать из /opt/firebird/bin тогда получаем "Statement failed, SQLCODE = -902" и предупреждение что такой базы данных как localhost нет.
Остальное +/- так как вы предсказали но если пытаюсь подключиться из другого PC, тогда получаю опять sql message=-902
Если правильно понимаю - то это что-то неверно с Permissions. Пробовал по разному - не удается.
Порт открыт, firebird user/group создается автоматически, дал permision на /tmp/TEST.FDB и для root, и для firebird - но никак не работает.
Что я делаю нетак?
Здравствуйте, попробуем разобраться:
Программу isql не удается найти потому что для нее не прописан глобальный путь поиска бинарных файлов. В файл /etc/profile нужно добавить строчку
После этого, чтобы изменения вступили в силу, нужно перелогиниться.
По другому пункту - действительно localhost не нужно указывать когда подключаемся локально. Внес поправки в статью.
Причиной "SQLCODE = -902" может быть неверно указанные логин или пароль, а также возможно что по какой-то причине не установились права на доступ к базе авторизации security.fdb.
Смотрим права доступа на файл:
В моем случае, вывод команды выглядит вот так:
Если права отличаются то установите полный доступ на этот файл для пользователя и группы firebird и после этого уже пробуйте подключиться.
Спасибо за поддержку.
Я не очень разбираюсь в nix, поэтому и такие, наверное, глупые вопросы и проблемы.
1) проблема решена, сегодня все хорошо, хотя файл не менял и рестарт вчера делал много раз. Моя ошибка, наверное
мой /etc/profile файл вот такой: link to pastebin
2) Для подключения использую Flamerobin из win-pc на той же подсети.
На сервере порт проверен и открыт как и писал, проверил из win-pc - тоже 3050 открыт.
permisions на security.fdb тоже все нормально:
-rw-rw---- 1 firebird firebird 643072 Apr 4 13:04 /opt/firebird/security.fdb
-rw-rw---- 1 firebird firebird 1097728 Apr 4 13:05 /tmp/TEST.FDB
Использую username SYSDBA и пароль masterkey, правильно? Что-то далаю я не правильно...
На вашем Win-PC должна быть установлена клиентская бибилиотека Firebird Client.
Может быть что сервер недоступен с вашего win-PC или порт на сервере закрыт брендмауером. Для проверки, на win-PC можно использовать telnet.
Сперва проверяем доступен ли сервер по сети с win-PC:
где xxx.xxx.xxx.xxx - IP-адрес сервера.
Далее проверяем открыт ли на Firebird сервере порт 3050:
Если получим пустой экран, то это означает что подключение установлено, служба запущена. Если же этого не случилось то нужно искать причину недоступности порта 3050.
Также стоит поэкспериментировать с настройками подключения в Flamerobin.
Проблема заключалась в Flamerobin. Когда регистрируешь сервер - не надо указывать порт, тогда все хорошо. Если указал порт (3050) тогда = error.