Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Добрый день!

На днях переехали с ФБ2.5 а ФБ3.0 и столкнулись с проблемой, что php-скрипты перестали работать.
Для работы с базой использовали модуль php_interbase, который сейчас отвечает "error connecting to database: connection rejected by remote interface".
Но в описании модуля написано "Это расширение поддерживает InterBase версии 6 и выше и Firebird версии 2.0 и выше. " (https://www.php.net/manual/ru/intro.ibase.php)

Обновление php до 7.3 не помогло.
phpinfo о модуле Interbase говорит, что:
Compile-time Client Library Version Firebird API version 25
Run-time Client Library Version LI-V6.3.3.26778 Firebird 2.5
То есть готов работать с АПИ версии 25, как проверить версию АПИ, я так и не нагуглил.

Подскажите, действительно ли этот модуль не работает с 3 версией или мы что-то не так делаем?
Если этот модуль не работает с 3 версией, что посоветуете для связи PHP с FB 3.0?
15 авг 19, 16:18    [21950277]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
hvlad
Member

Откуда:
Сообщений: 10531
metris,

подложить PHP клиента от fb3, или настроить fb3 на работу со старыми клиентами.
15 авг 19, 16:28    [21950291]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1063
metris,
по умолчанию старые клиенты не могут подключаться к серверу Firebird 3.0
Никто не догадался заглянуть в firebird.conf после установки Firebird 3.0?
Доступ есть к конфигу? Покажите этот конфиг.
PHP и Firebird на разных машинах?
15 авг 19, 16:30    [21950295]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Спасибо большое за наводку, все получилось.

Для будущих поколений, оставлю ссылки на настройку Legacy Authentication (возможность подключаться к Firebird3.0 клиентам более ранних версий)
https://www.firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-compat-legacyauth.html

и вот этот пост https://github.com/hgourvest/node-firebird/issues/99
ключевое там:
3) Next you need to create another SYSDBA account (using gsec) so it
also exists as a legacy user. I am not 100% sure if you only need to do
"gsec -user sysdba -password masterkey", or that you explicitly need to
do "add sysdba -pw masterke" from the gsec prompt.
15 авг 19, 22:55    [21950563]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris
3) Next you need to create another SYSDBA account (using gsec) so it
also exists as a legacy user. I am not 100% sure if you only need to do
"gsec -user sysdba -password masterkey", or that you explicitly need to
do "add sysdba -pw masterke" from the gsec prompt.


примечательно, что SYSDBA в Legacy_UserManager уже есть, в отличие от Srp.
И пора приучаться работать без gsec. Пользователями гораздо удобней управлять через isql
15 авг 19, 23:23    [21950580]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Симонов Денис,

Через gsec вчера пытался несколько раз изменить пароль SYSDBA - никак, все равно подключение с masterke проходит. Я прям в замешательстве.

Нашел тут соответствующую тему, буду пробовать, как закончится рабочий день.
https://www.sql.ru/forum/1220656-1/izmenit-parol-sysdba-firebird-3
16 авг 19, 14:50    [21951092]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

metris
Через gsec вчера пытался несколько раз изменить пароль SYSDBA - никак, все равно
подключение с masterke проходит. Я прям в замешательстве.

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

Posted via ActualForum NNTP Server 1.5

16 авг 19, 15:00    [21951102]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Dimitry Sibiryakov,

Спасибо, я не DBA, поэтому пока сообразил только то, что нужно почитать про менеджер пользователей FB и какое отношение к нему имеет gsec :)

Буду благодарен, если подскажете, что еще почитать, чтоб решить проблему :)
16 авг 19, 16:07    [21951171]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Arioch
Member

Откуда:
Сообщений: 10967
в FB3 есть несколько компонентов (менеджеров пользователей, security plugins), каждый из которых хранит свой независимые набор пользователей и паролей.

любой метод изменения пользователей - хоть с gsec, хоть с SQL, да и с API тоже наверное - работает с одним из этих наборов в одном из компонентов. Либо с тем, который ты ему явно укажешь, либо с тем, который ему больше понравится.

соотв., чтобы не проходил masterkey нужно поменять пароль у всех созданных пользователей SYSDBA, в каждом компоненте, где такой есть.
16 авг 19, 16:27    [21951204]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Arioch
Member

Откуда:
Сообщений: 10967
login as sysdba, then Select * from sec$users
16 авг 19, 16:30    [21951208]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Arioch,

вот как раз в SQL можно указывать имя менеджера пользователей явно. Да и возможностей в нём пошире
16 авг 19, 16:38    [21951220]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Arioch
Member

Откуда:
Сообщений: 10967
Симонов Денис,

а разве не везде можно ?
16 авг 19, 16:41    [21951225]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Arioch,

ну покажи мне как в gsec можно указать какой менеджер пользователей используется
16 авг 19, 16:55    [21951251]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30321

16.08.2019 16:55, Симонов Денис пишет:
> ну покажи мне как в gsec можно указать какой менеджер пользователей используется

просто никто не допилил

Posted via ActualForum NNTP Server 1.5

16 авг 19, 17:02    [21951273]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

metris
что еще почитать, чтоб решить проблему :)

Language Reference и Release Notes для Firebird 3.

Posted via ActualForum NNTP Server 1.5

16 авг 19, 17:24    [21951302]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Мимопроходящий,

его и не собираются допиливать. gsec объявлен deprecated в 3.0
16 авг 19, 17:43    [21951319]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
hvlad
Member

Откуда:
Сообщений: 10531
Мимопроходящий
16.08.2019 16:55, Симонов Денис пишет:
> ну покажи мне как в gsec можно указать какой менеджер пользователей используется

просто никто не допилил
Забывайте про gsec, он не будет поддерживать новые фичи

>gsec
*** gsec is deprecated, will be removed soon ***
16 авг 19, 17:45    [21951320]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30321

жалко мне, Маха, пинжака с карманАми,
Ванька в йом такой красивый был...

(С)

Posted via ActualForum NNTP Server 1.5

16 авг 19, 17:49    [21951323]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9302
hvlad
Забывайте про gsec, он не будет поддерживать новые фичи
>gsec
*** gsec is deprecated, will be removed soon ***
Хочу (для sysdba, как минимум) возможность подключиться из isql не к конкретной базе, а "к серверу".
Ну или локальный протокол под линуксом, чтобы можно было цепляться к xnet://security.db
17 авг 19, 02:42    [21951589]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Курение манов и Release notes не помогло, к сожалению.

1. В файле firebird.conf изменены строки:
AuthServer = Legacy_Auth, WinSspi, Srp
AuthClient = Legacy_Auth, Srp, WinSspi
UserManager = Legacy_UserManager, Srp
(еще размеры кеша, но это ведь не имеет отношения к вопросу)

2. в файле databases.conf указана только база:
security.db = $(dir_secDb)/security3.fdb
{
RemoteAccess = false
DefaultDbCachePages = 50
}

3. В базе security3.fdb и рабочей базе существует один пользователь - SYSDBA (проверял 'select * from sec$users;'), в обеих базах поменял пароль SYSDBA на отличный от masterkey (ALTER USER SYSDBA SET PASSWORD '123';), а подключение с паролем masterkey проходит...


Что я еще не сделал? :(
20 авг 19, 22:42    [21953864]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris,

используешь embedded вместо сетевого сервера. Пароли там вообще игнорируются
20 авг 19, 23:02    [21953876]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Симонов Денис
metris,

используешь embedded вместо сетевого сервера. Пароли там вообще игнорируются


Установил Providers = Remote,Loopback та же история... :(

Я сейчас не могу концептуально понять - я что-то делаю не так с конфигураацией или ошибка лежит за пределами параметров настройки сервера...
21 авг 19, 22:25    [21954889]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
hvlad
Member

Откуда:
Сообщений: 10531
metris,

строка коннекта какая ? В ней есть localhost ?
21 авг 19, 22:26    [21954890]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
нет, подключение происходит так:

db.php
$baseip = '256.256.256.256';
$database = $baseip.':/home/firebird/base.fdb';
$db_user = 'SYSDBA';
$db_password = 'masterke'


test_connect.php
include('../db.php');

if (!($db=ibase_connect($database, $db_user, $db_password))) { 
		echo('<br><b>error connecting to database</b>: ' . ibase_errmsg()); 
		}	
else { 
	echo('connected!');
26 авг 19, 22:19    [21957945]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris,

что выводит

select SEC$USER_NAME, SEC$PLUGIN from sec$users
26 авг 19, 22:24    [21957946]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Симонов Денис
metris,

что выводит

select SEC$USER_NAME, SEC$PLUGIN from sec$users


SQL> select SEC$USER_NAME, SEC$PLUGIN from sec$users;

SEC$USER_NAME SEC$PLUGIN
=============================== ===============================
SYSDBA Srp
26 авг 19, 22:37    [21957953]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris
1. В файле firebird.conf изменены строки:
AuthServer = Legacy_Auth, WinSspi, Srp
AuthClient = Legacy_Auth, Srp, WinSspi
UserManager = Legacy_UserManager, Srp


чтобы работал Legacy_Auth нужно установить
WireCrypt = Enabled или Disabled
26 авг 19, 22:38    [21957955]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
извините за форматирование, редактировать сообщение не могу (

SQL> select SEC$USER_NAME, SEC$PLUGIN from sec$users;

SEC$USER_NAME                   SEC$PLUGIN
=============================== ===============================
SYSDBA                          Srp
26 авг 19, 22:38    [21957956]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Симонов Денис
metris
1. В файле firebird.conf изменены строки:
AuthServer = Legacy_Auth, WinSspi, Srp
AuthClient = Legacy_Auth, Srp, WinSspi
UserManager = Legacy_UserManager, Srp


чтобы работал Legacy_Auth нужно установить
WireCrypt = Enabled или Disabled


установлен в Disabled
26 авг 19, 22:39    [21957957]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris,

у тебя Legacy_UserManager не подключен

вот здесь символ комментария # точно снят?
UserManager = Legacy_UserManager, Srp
26 авг 19, 22:41    [21957960]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Симонов Денис,

точно снят :)
26 авг 19, 22:43    [21957961]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Привожу все раскомментированные строки в firebird.conf

AuthServer = Legacy_Auth, WinSspi, Srp
AuthClient = Legacy_Auth, Srp, WinSspi
UserManager = Legacy_UserManager, Srp
WireCrypt = Disabled
Providers = Remote, Loopback
ServerMode = SuperClassic

И сейчас обнаружил (пока не понял, почему не вылезло раньше), что при установке Providers = Remote, Loopback, скрипт выдает ошибку Unable to complete network request to host "". Failed to establish a connection.

То есть подключение происходит действительно в embedded режиме...?

Если ее закоментить, скрипт подключается к базе с паролем masterke, а с установленным ранее паролем - нет.
26 авг 19, 22:55    [21957966]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris,

странно. Вот только что попробовал на уровне databases.conf прописать
UserManager = Legacy_UserManager, Srp

и у меня отображается сразу 2 SYSDBA

Замечу что я инициализировал только SYSDBA в Srp (при дефолтных настройках). Второй сразу стал виден после добавления Legacy_UserManager в UserManager. Потому что он уже лежит в security.db
26 авг 19, 22:58    [21957969]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris,

вот это
Providers = Remote, Loopback
верни в умолчательные. Мы то думали ты без сетевого протокола подрубаешься.
26 авг 19, 22:59    [21957970]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Симонов Денис,

Providers = Remote, Loopback закоментил, эт понятно. Но ситуацию с паролями это не меняет.

А то, что раньше на этом сервере работал FB 2.5 могло как-то повлиять?
26 авг 19, 23:12    [21957974]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
hvlad
Member

Откуда:
Сообщений: 10531
metris
$baseip = '256.256.256.256';
Серьёзно ? 256 ?
26 авг 19, 23:37    [21957982]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
hvlad,

ты же не думаешь, что это реальный адрес из конфига...? :)
27 авг 19, 08:57    [21958051]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris,

я думаю что сначала надо потренироваться на кошках IBExpert или isql, а только потом терзать пых.
Судя по выборке из sec$users у тебя что-то не так с настройками
27 авг 19, 09:33    [21958072]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris,

и ещё WinSspi в UNIX/Linux не имеет смысла.

Я у себя вообще в пыхе родным трёшкиным клиентом подключаюсь. Просто сделав

ln -s /usr/lib/libfbclient.so.3.0.4 /usr/lib/libfbclient.so.2
ln -s /usr/lib/libfbclient.so.2 /usr/lib/libfbclient.so
27 авг 19, 09:36    [21958077]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
metris,

вот мой рабочий конфиг. Работает и с клиентом 3.0 и клиентом 2.5

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

Когда установлено 2 менеджера пользователей, то существует 2 SYSDBA.
Первый менеджер пользователей из списка используется по умолчанию.
Для того чтобы задействовать другие надо указывать плагин в {CREATE|ALTER|DROP} USER

ALTER USER SYSDBA PASSWORD '67-UiT' USING PLUGIN Legacy_UserManager;


З.Ы. Зачем тебе SuperClassic? В трёшке есть нормальный SMP Super
27 авг 19, 09:46    [21958089]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Симонов Денис,

кстати, да, наверное для начала стоило тестить на isql, потом пых, т.к. может проблема с этой стороны

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

Судя по тому, что у меня в базе один пользователь SYSDBA, как найти второго? :) (у которого, вероятно, пароль masterkey)

ЗЫ. При запуске в Super нагрузка на ЦП размазана ровно, но не более 50% на ядро.
ЗЗЫ. Учитывая все вышеперечисленное, наверное будем искать ДБА, кто поможет решить эти проблемы и оптимизировать работу. Постараюсь отписать потом, где нашли проблему.
27 авг 19, 10:10    [21958108]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
судя вот по этому

metris
И сейчас обнаружил (пока не понял, почему не вылезло раньше), что при установке Providers = Remote, Loopback, скрипт выдает ошибку Unable to complete network request to host "". Failed to establish a connection.

То есть подключение происходит действительно в embedded режиме...?

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


всё у вас в порядке. Не надо было трогать Providers.
Убери WinSspi не работает оно в NIX
После изменений проверь

select SEC$USER_NAME, SEC$PLUGIN from sec$users


если там 2 SYSDBA, значит всё нормально.

Выше я показывал как изменить пароль SYSDBA для конкретного плагина
27 авг 19, 10:15    [21958110]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Симонов Денис,

ок, спасибо, вечером попробую, отпишусь.
Щас не могу проверить, нельзя перезагружать базу
27 авг 19, 10:50    [21958135]     Ответить | Цитировать Сообщить модератору
 Re: Связка Firebird 3.0 и PHP  [new]
metris
Member

Откуда:
Сообщений: 22
Итог - ТС му**к.

Драматургия: БД смотрит в интернет. Когда включил Legacy и понял, что там дефолтный пароль, выключил его и начал разбираться, как корректно изменить пароль. Ну и я менял пароль для Srp...
Для тестирования я включаю Legacy, в БД появляется пользователь sysdba с паролем masterke, тест провален, я выключаю Legacy и начинаю искать пользователя с дефолтным паролем, которого в тот момент уже нет.

А всего то надо было включить Legacy и посмотреть:
SQL> select SEC$USER_NAME, SEC$PLUGIN from sec$users;

SEC$USER_NAME                   SEC$PLUGIN
=============================== ===============================
SYSDBA                          Legacy_UserManager
SYSDBA                          Srp


Ну и как чуть выше писал Денис:
SQL> ALTER USER SYSDBA PASSWORD '123123' USING PLUGIN Legacy_UserManager;


Вот всегда так в nix, неделю мучаешься, а решается все одной строкой...

Всем спасибо :)
27 авг 19, 22:10    [21958614]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Firebird, InterBase Ответить