Проблемы с подключением к Interbase на удаленном сервере с использованием переполнения стека

Попытка установить соединение с базой данных между сервером Linux / Ubuntu (клиент) и сервером Windows (хост), используя приведенный ниже код, но по какой-то причине не удается. IP-адрес в порядке (pinged ok), порт 3050 открыт, а имя пользователя и пароль также верны, так в чем может быть проблема? Код ниже возвращает «Соединение не удалось !!!». И да, библиотека php / interbase установлена.

$db_path = '192.*.*.*:C:\folder\DBFILE.IB';
$username = 'USER';
$password = 'password';

$dbh = ibase_connect($db_path, $username, $password) or die('Connection failed!!!');

Просто обновление. Оказалось, что с подключением все в порядке, и проблема связана с именем пользователя и / или паролем. Следующая ошибка возвращается ibase_errmsg()
«Ваше имя пользователя и пароль не определены. Попросите администратора базы данных настроить регистрацию в Firebird.«Тем не менее, имя пользователя и пароль были проверены три раза несколько раз, и все должно быть в порядке.

0

Решение

Я получил ту же ошибку при попытке подключиться к InterBase XE7 (V12) с помощью php ibase_connect. Мой сервер InterBase был размещен на компьютере с Windows 10.

Убедитесь, что библиотека php / interbase установлена ​​и указана в результате get_loaded_extensions(),

В моем случае проблема была в дайджесте паролей между базами. Для более старой базы данных он использует дайджест ‘des-crypt’, а для более новой версии он использует дайджест ‘sha-1’. Я просто изменил дайджест пароля на «des-crypt», после чего он заработал.
Вот шаги, чтобы изменить дайджест пароля для interbase, используя isql.exe.

Найти admib.ib здесь C:\ProgramData\Application Data\Embarcadero\InterBase\gds_db или в папке c: \ program, затем следуйте инструкциям

1. SQL> CONNECT "C:\Program Files (x86)\borland\interbase\admin.ib" (hit enter)
2.CON> user 'SYSDBA' password 'masterkey';

3.SQL> ALTER DATABASE SET PASSWORD DIGEST 'DES-CRYPT';

4.SQL> UPDATE USERS SET PASSWORD_DIGEST = 'DES-CRYPT' WHERE USER_NAME='sitesync';

5.SQL> COMMIT;

Затем откройте gsec.exe и введите эти команды

 gsec -user sysdba -password masterkey (hit enter)
modify sitesync -pw newpassword (hit enter and password changed)

Вернуться к ша-1 снова

6. SQL> ALTER DATABASE SET PASSWORD DIGEST 'SHA-1';
7 commit;

И это все. Обратите внимание, я впервые работал с php и interbase. Пожалуйста, простите меня за любые недостающие детали или опечатки.

1

Другие решения

Возможно, обратная косая черта должна быть экранирована в C: \\ folder \\ DBFILE.IB, а в противном случае C: \ folder \ DBFILE.IB преобразуется в путь для мусора, который IBASE не находит и дает довольно неточная ошибка MSG?

0

По вопросам рекламы [email protected]