===== Инициализация базы данных безопасности в Firebird 3.0 (включение SYSDBA в security3.fdb) =====
{{:firebird:pasted:20181106-233707.png }} В СУБД **Firebird 3.0** в конфигурационном файле **firebird.conf** есть параметр **SecurityDatabase**. Он определяет имя и расположение базы данных безопасности, в которой хранятся имена пользователей и пароли, используемые экземпляром Firebird для проверки удаленных подключений. По умолчанию путь определяется, как ''$(root)/security3.fdb''. Этот путь может быть переопределен для любой отдельно взятой базы данных в конфигурационном файле **database.conf** (то есть при необходимости в Firebird 3.0 для каждой БД можно иметь свою БД безопасности).
В конфигурации по умолчанию в СУБД **Firebird 3.0** удалённый доступ к базе данных безопасности **security3.fdb** отключен, а пользователь **SYSDBA** в базе отсутствует в том случае, если экземпляр СУБД разворачивался не из инсталлятора, а вручную из zip-архива по аналогии с тем, как описано [[:firebird:manual-installation-of-multiple-instances-of-firebird-2-5-in-service-mode-on-windows-server-2012-r2|здесь]]. В такой конфигурации мы фактически не можем подключиться к экземпляру по сети. Однако мы можем самостоятельно провести инициализацию БД безопасности путём создания в ней соответствующего пользователя **SYSDBA**. В качестве опорного документа с информацией о том, как это делается, можно использовать описание [[https://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-compat-initsec.html|Firebird 3.0.4 Release Notes - Compatibility Issues - Initializing the Security Database]]
Инициализацию БД безопасности будем проводить с помощью утилиты **isql**, так как рассматриваемая[[:firebird:changing-default-password-for-sysdba-user-in-firebird-2-5|ранее]] утилита **gsec** в Firebird 3 считается устаревшей. Утилита **gsec** может работать с базой **security3.fdb**, но не будет работать с альтернативными БД безопасности, поэтому лучше сразу отказаться от использование данной утилиты.
Net stop "<имя службы>"{{ :firebird:pasted:20190221-195856.png }} Согласно Release Notes команды управления пользователями СУБД могут работать с любой открытой базой данных и там приводится пример с использованием демонстрационной БД **employee.fdb**, которая присутствует в свеже-развёрнутом экземпляре и имеет алиас в **databases.conf**. Мы используем другой путь и подключимся напрямую к самой БД **security3.fdb**, как к локальному файлу с помощью утилиты **isql** во встроенном режиме с указанием пользователя **SYSDBA** и без пароля.
cd /d E:\FBInst2\Bin isql E:\FBInst2\Bin\security3.fdb -user SYSDBAВ случае успешного подключения увидим имя базы и пользователя, от имени которого мы подключились к базе {{ :firebird:pasted:20190221-200039.png }} Выполним команду создания суперпользователя с нужным нам паролем, сохраним изменения и отключимся от базы
create user SYSDBA password 'SuP#r$ecR6T4'; commit; quit;{{ :firebird:pasted:20190221-200137.png }}
isql KOM-DEV02/9002:E:\FBInst2\Bin\security3.fdb -user "SYSDBA" -password "SuP#r$ecR6T4"{{ :firebird:pasted:20190221-200622.png }} Как видим по ошибке "//no permission for remote access to database//", удалённый доступ к БД отключен. Включить удалённый доступ на время проверки можно с помощью конфигурационного файла **databases.conf**, изменив для базы **security** значение параметра **RemoteAccess** с **false** на **true**: {{ :firebird:pasted:20190221-200716.png }} Перезапуск службы при этом не требуется и удалённый доступ к базе начинает работать сразу. Снова попробуем подключиться через TCP порт к экземпляру и его базе.
isql KOM-DEV02/9002:E:\FBInst2\Bin\security3.fdb -user "SYSDBA" -password "SuP#r$ecR6T4"{{ :firebird:pasted:20190221-200802.png }} Подключившись, попробуем получить листинг пользователей, выполнив запрос:
show users;Как видим, теперь подключение работает. В целях повышения уровня безопасности удалённый доступ к БД **security** вернём в исходное, то есть в выключенное, состояние, вернув значение параметра **RemoteAccess** в **false** в конфигурационном файле **databases.conf** для этой базы. {{ :firebird:pasted:20190221-200850.png }} В качестве дополнительной проверки можем попробовать удалённо подключиться к демонстрационной базе данных с использованием учётной записи **SYSDBA** и заданным нами паролем и выполним в ней действие, требующее административных привилегий, например, создадим, а затем удалим нового пользователя:
isql.exe KOM-DEV02/9002:employee -user "SYSDBA" -password "SuP#r$ecR6T4" create user USER1 password 'sA!L4t#7Fe$t'; show users; drop user USER1; show users;{{ :firebird:pasted:20190221-201014.png }} Как видим, созданная нами административная учётная запись **SYSDBA** успешно работает в режиме удалённого подключения к базам данных экземпляра **Firebird 3**. ---- Проверено на следующих конфигурациях: ^ Версия ОС ^ Версия Firebird ^ | Windows Server 2012 R2 Standard EN (6.3.9600) | 3.0.4.33054 64-bit | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 21.02.2019 19:49 {{tag>Firebird "Firebird 3.0" RDBMS DBMS Instance "Windows Server" SYSDBA Password Security GSEC isql}} ~~DISCUSSION~~