Как создать пользователя для базы данных Firebird - PullRequest
0 голосов
/ 26 мая 2018

Загруженная база данных Firebird Firebird-3.0.3.32900-0_x64_pdb.zip.Извлеките папку install_service.bat и получите доступ к базе данных EMPLOYEE.FDB.Также можно получить доступ к базе данных EMPLOYEE.FDB без install_service.Для создания нового пользователя для EMPLOYEE.FDB я открыл базу данных EMPLOYEE.FDB в isql, используя SYSDBA USER.Используемый ниже запрос для создания нового пользователя:

create user DEMO password 'demo' GRANT ADMIN ROLE;

После этого я также могу открыть базу данных EMPLOYEE.FDB, используя DEMO USER в isql.

Я использую сторонний инструмент для графического интерфейса: https://fishcodelib.com/Database.htm

С помощью вышеуказанного инструмента я не могу получить доступ к базе данных EMPLOYEE.FDB.Ошибка ниже:

Код ошибки: 335544472 Номер: 335544472, Класс: 0, Строка: 0 ErrorMessage: Ваше имя пользователя и пароль не определены.Попросите администратора базы данных настроить вход в Firebird.

Параметры конфигурации Firebird установлены неправильно.Пожалуйста, включите следующие параметры в firebird.conf: (Для SRP по умолчанию) WireCrypt = Включено (Для устаревшей аутентификации) WireCrypt = Включено AuthServer = Legacy_Auth, Srp, Win_Sspi

Установить пользователя и пароль: Параметры -> (общие)Дополнительные параметры строки подключения -> Firebird

Я уже применил вышеуказанную конфигурацию в файле firebird.conf.Все еще получаю то же исключение.Итак, мой вопрос заключается в том, это правильный способ создания пользователя для любой базы данных?Означает, что я хочу создать новую базу данных с новым пользователем для моего приложения на c #.

Пример:

База данных: Mydb.fdb;Пользователи: SYSDBA (пользователь по умолчанию), демо

Я хочу выполнить все операции SQL с использованием демо-пользователя в моем приложении C #.Итак, не могли бы вы помочь мне, как создать несколько пользователей для конкретной базы данных с различными правами и грантами.

Я прошел:

https://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-compat-initsec.html

https://firebirdsql.org/refdocs/langrefupd25-security-rdbadmin.html

Ошибка подключения к базе данных Firebird SYSDBA

Но не понимаю, как это сделать.

Редактировать: Конфигурация файла Firebird.conf:

AuthServer = Legacy_Auth,srp,Win_Sspi

WireCrypt = Enabled 

AuthClient = Srp, Win_Sspi, Legacy_Auth

1 Ответ

0 голосов
/ 26 мая 2018

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

Проблема заключается в том,что поставщик Firebird ado.net 5.0 и выше при подключении к Firebird 3 или выше поддерживает только протокол аутентификации Srp Win_Sspi ).Протокол Legacy_Auth не поддерживается при подключении к Firebird 3 (*).

Вам потребуется создать пользователя Srp .Для этого вам необходимо отредактировать firebird.conf и изменить (или установить) значение UserManager на:

UserManager = Srp

Или, если вам также необходимо создать устаревшие учетные записи пользователей:

UserManager = Srp, Legacy_UserManager

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

Затем создайте пользователя, используя:

create user DEMO password 'demo' GRANT ADMIN ROLE using plugin Srp;

Если вы уйдете using plugin Srpвыкл., Firebird будет использовать менеджер пользователей по умолчанию (первый в списке), в вашей первоначальной настройке он был, по-видимому, установлен на Legacy_UserManager.

Если у вас нет инструментов, требующих использования устаревших пользователей аутентификации,Я настоятельно рекомендую заменить всех этих пользователей пользователями Srp .Это должно быть так же просто, как создание новых пользователей с тем же именем с помощью плагина Srp.Затем удалите Legacy_Auth из настройки AuthServer в firebird.conf.Подумайте об удалении устаревших пользователей авторизации с drop user <name> using plugin Legacy_UserManager, чтобы иметь возможность сделать это, Legacy_UserManager должен быть в списке UserManager.


*: я узнал только оэто сегодня сам.В настоящее время я думаю о том, чтобы написать запрос на извлечение, который добавляет поддержку устаревшей аутентификации при подключении к Firebird 3 и более поздним версиям.

...