Firebird авторизация по пользователю windows

Firebird авторизация по пользователю windows

В администрируемой сети обратитесь к системному администратору за IP-адресом для Вашего сервера.

Если у Вас простая изолированная сеть из, например, двух компьютеров, Вы можете назначить серверу любой IP-адрес за исключением 127.0.0.1 (который зарезервирован за локальным loopback-интерфейсом) и, конечно же, IP-адресом, назначенным для клиентского (второго) компьютера.

Если Вы намерены испробовать установку и клиента и сервера на автономном компьютере, Вам необходимо использовать адрес loopback-интерфейса – localhost, с IP-адресом 127.0.0.1

Замечание

Под Windows к Superserver возможно осуществлять локальное подключение без использования loopback-интерфейса. Это не TCP/IP-соединение и это не потоко-безопасный (thread-safe) способ подключения к локальному серверу. Этот способ хорош при эксклюзивном режиме работы с базой данных с использованием утилит командной строки ( gsec , gbak и т.д.). В противоположность этому, в случае Linux и Classic-сервера прямые соединения, даже множественные, к базе данных полностью безопасны.

Имя пользователя и пароль, значения по умолчанию

SYSDBA — пользователь, который имеет все привилегии на сервере. В зависимости от версии, операционной системы и архитектуры, инсталляционная программа для SYSDBA:

назначит пароль masterkey (точнее, masterke: символы после восьмого игнорируются), или

запросит пароль во время процедуры установки, или

сгенерирует и сохранит случайное значение пароля в файле /opt/firebird/SYSDBA.password.

Если, вдруг, Ваш сервер выставлен непосредственно в Интернет и при этом пароль у SYSDBA — masterkey, немедленно измените его, используя утилиту командной строки gsec ( Прим. перев.: В целях повышения уровня безопасности целесообразно изменить пароль SYSDBA в любом случае).

Как изменить пароль SYSDBA

Для управления учетными записями пользователей в составе пакета Firebird поставляется утилита командной строки gsec .

Важно

В некоторых инсталляциях Firebird запуск утилиты gsec возможен только при входе в систему от имени привилегированного пользователя (например, root в системе Linux) или пользователя, от имени которого происходит запуск серверного процесса Firebird. На серверных системах Windows для использования утилиты gsec , обычно, Вы должны быть членом группы Power User или другой правомочной группы.

Если Вы уверены, что у Вас достаточно привилегий, но использование gsec заканчивается сообщениями типа « unavailable database — unable to open database » — возможно, сервер не запущен. Вернитесь к разделу Тестируем то, что установили и попробуйте устранить причину.

Если Вы уверены, что у Вас достаточно привилегий, но использование gsec заканчивается сообщениями типа « unavailable database — unable to open database »:

либо Вы используете Windows Classic Server и указываете неверное значение параметра -database (см. далее), либо

возможно, сервер не запущен, в этом случае, вернитесь к разделу Тестируем то, что установили и попробуйте устранить причину.

Предположим, Вы решили сменить пароль SYSDBA на icuryy4me.

Перейдите к интерпретатору командной строки и смените текущую директорию на ту, в которой находятся утилиты командной строки. Если Вы не знаете, где они находятся, обратитесь за подсказкой к таблице Компоненты Firebird 1.5 и их расположение.

Наберите следующее, если Вы не используете Windows Classic Server:

gsec -user sysdba -password masterkey

В случае использования Windows Classic Server, Вы должны указывать полное сетевое расположение базы данных безопасности (к сожалению!):

gsec -user sysdba -password masterkey -database «localhost:C:\Program Files\Firebird\Firebird_1_5\security.fdb» (при необходимости измените путь)

Замечание

В Linux, лучше писать ./gsec , чем просто gsec . Иначе есть шанс, что запуститься « не та » gsec , или она просто не найдется.

На всех платформах, за исключением Windows, путь и имена файлов являются чувствительными к регистру; пароли всегда регистрочувствительны.

В любом случае, после нажатия клавиши Enter , Вы должны наблюдать приглашение утилиты gsec :

Нажмите Enter . Новое значение пароля — icuryy4me, зашифровывается и сохраняется, предыдущее значение — masterkey, теперь недействительно.

Для выхода из gsec , используйте команду:

Замечание

Firebird игнорирует в значении пароля любые символы после восьмого, поэтому icuryy4m подходит так же, как, например, и icuryy4monkeys.

Средства администрирования

В состав пакета Firebird не входит какое-либо графическое средство администрирование, но есть набор утилит командной строки, исполняемые файлы находятся в папке bin.

При этом существует большой выбор средств от сторонних производителей, различных степеней замечательности, (кросс-) « платформенности » и платности.

Замечание

Для управления сервером под Linux Вы можете использовать клиента под Windows и наоборот.

Firebird авторизация по пользователю windows

В директории examples Вашей инсталляции Firebird лежит образец базы данных — employee.fdb, которую можно использовать « для пробы пера ».

Имя сервера и путь

Если Вы вдруг решили переместить образец базы данных на другой диск, убедитесь, что он физически подключен к компьютеру. Разделяемые (shared), присоединенные (mapped) диски или (на Unix) смонтированные (mounted) SMB (Samba) файловые системы не будут работать. Это правило касается любых создаваемых Вами баз данных.

При использовании TCP/IP строка подключения состоит из двух частей: имя сервера и путь к файлу. Формат строки имеет следующий вид:

Пример для Linux или другой Posix-системы с именем serverxyz:

Пример для Windows:

Оператор CONNECT

Для подключения к базе данных Firebird пользователь должен аутентифицироваться с использованием имени пользователя и правильного пароля. Кроме того, любому пользователю отличному от SYSDBA , root (Posix — системы), или Administrator (на Windows-системах, если Firebird запущен от имени этого пользователя) необходимо иметь разрешения на доступ к объектам внутри самой базы данных (так называемые объектные привилегии). Для простоты, рассмотрим процедуру аутентификации пользователя SYSDBA с использованием пароля masterkey.

Читайте также:  One and one mail mac os

Используем isql

Существует несколько способов подключения к базе данных с использованием утилиты isql . Один из них — это использование isql в интерактивном режиме. Перейдите в подкаталог bin директории, в которой установлена Ваша версия Firebird, и в командной строке наберите isql (для Linux: ./isql ) [↵ означает « нажать клавишу Enter »]:

Важно

В isql каждое SQL-выражение должно завершаться точкой с запятой. Если строка не заканчивается точкой с запятой, и Вы нажимаете клавишу Enter , isql будет считать, что выражение будет продолжаться на следующей строке и сменит приглашение с SQL> на CON>. Это позволяет разбивать длинные выражения на несколько строк. Если Вы нажали клавишу Enter , забыв указать точку с запятой, просто наберите символ после приглашения и нажмите Enter ещё раз.

Если, используя Classic Server под Linux, не указать имя хоста, будет предпринята попытка организовать прямое локальное соединение. Что, в свою очередь, может закончиться неудачей в случае отсутствия у текущей учетной записи Linux необходимых прав доступа к файлу базы данных. В этом случае попробуйте подключиться к localhost: /

. В этом случае файл будет открывать серверный процесс (который в Firebird 1.5 обычно работает от имени firebird). С другой стороны, попытка сетевого соединения может закончиться неудачно, если пользователь создавал базу данных при локальном подключении и у сервера нет необходимых прав.

В случае использования Classic Server под Windows, Вы должны указывать имя хоста (это может быть localhost) и полный путь, в противном случае подключиться не получиться.

Замечание

Несмотря на то, что в Firebird « нормальными » символами разделения строк являются одинарные кавычки, в примере, при указании пути к базе данных, использовались двойные кавычки. Это необходимо, так же как и в некоторых других утилитах командной строки, при указании путей, содержащих пробелы. Одинарные кавычки будут работать для путей, не содержащих пробелы.

Кавычки вокруг « SYSDBA » и « masterkey » необязательны. Также не обязательно заключать в кавычки путь к базе данных, не содержащий пробелов.

Далее isql сообщит о том, что Вы подключились:

Теперь Вы можете продолжить эксперименты с базой employee.fdb. isql означает interactive SQL [utility] (интерактивный SQL). Вы можете использовать её для извлечения данных, получения метаинформации, создания объектов базы данных, запуска скриптов и многого другого.

Для того, чтобы вернуться в командную строку наберите

За дополнительной информацией об использовании isql обращайтесь к Using Firebird, глава 10: Interactive SQL Utility (isql).

Используем графические утилиты

Обычно, графические средства самостоятельно собирают строку соединения на основании информации, вводимой пользователем в отдельных полях — имя сервера, путь к базе данных, имя пользователя и пароль. Как их использовать должны быть понятно из информации, изложенной в предыдущем разделе.

Замечание

Существуют средства, в которых имя сервера + полный путь ожидаются в виде одной строки

Помните, что на Linux и других Posix-системах имена файлов и названия команд являются чувствительными к регистру

Delphi-Help

Учетные записи пользователя в InterBase/Firebird

Учетные записи пользователя в InterBase/Firebird

Для доступа различных пользователей ко всем базам данных одной машины (обычно сервера) в InterBase/Firebird используется база данных безопасности. Это файл базы данных, хранящийся в корневом каталоге инсталляции сервера базы данных и имеющий имя isc4.gdb для InterBase 6.х и Firebird 1.0.х , admin.ib для InterBase 7.х или security.fdb для Firebird 1.5.

После инсталляции системы база данных безопасности содержит ровно одну учетную запись — пользователь SYSDBA с паролем masterkey . Это особый пользователь системы. Он имеет неограниченный доступ и неограниченные полномочия к любой базе данных, находящейся на серверной машине. Изменить имя этого пользователя или удалить его из базы данных безопасности невозможно, но можно поменять пароль, что весьма рекомендуется сделать сразу после инсталляции системы в промышленно работающей вычислительной сети.

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

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

Структура учетной записи описана в табл. 1.

Таблица 1. Структура учетных записей пользователей

Столбец

Описание

• Имя пользователя. Максимальная длина 31 символ. Имя не чувствительно к регистру.

• Пароль пользователя. Чувствителен к регистру. Максимальное количество символов 32, однако только первые восемь имеют значение.

• Целое число, задающее идентификатор пользователя.

• Целое число, задающее идентификатор группы.

• Имя. Может занимать до 17 символов.

• Второе имя. Можем использовать в качестве отчества. До 17 символов.

• Фамилия. До 17 символов.

Обязательными являются только имя пользователя и пароль.

Внимание. Ни в каком поле учетной записи не пытайтесь использовать буквы кириллицы. Такая запись не будет создана или изменена.

Для работы с учетными записями базы данных безопасности (отображение, добавление, изменение, удаление) используется утилита gsec или какая-либо из программ графического интерфейса.

Просмотр и изменение учетных записей пользователей

Для отображения, создания и изменения учетных записей можно использовать утилиту gsec, входящую в комплект поставки сервера базы данных, и программу графического интерфейса, например, IBExpert или SQLHammer. Кроме того, используя компоненты FIBPlus, мы можем написать собственную программу, выполняющую необходимые действия и имеющую нравящийся нам интерфейс. Рассмотрим все эти варианты.

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

Вызовите окно командной строки. Сделайте текущим диск, где находится установленный сервер базы данных, введя имя диска и двоеточие, например:

После этого войдите в подкаталог \ Bin корневого каталога инсталляции сервера базы данных, например,

Запустите утилиту gsec, введя:

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

Читайте также:  Mac os no bootable device insert boot disk and press any key

Появится подсказка утилиты:

Отобразите учетные записи, набрав display и нажав Enter .

Если вы не добавляли учетных записей, то будет отображена только учетная запись пользователя SYSDBA. Обратите внимание, что пароль не выводится. Вообще в окне DOS отображение не слишком удобное для восприятия, потому что размер экрана (80 символов) явно маловат для размещения всей строки.

Добавьте новую учетную запись, например, WIZARD и с паролем master. Для этого используется команда ADD. Переключатели этой команды приведены в табл. 2.

Таблица 2. Переключатели команды ADD

Переключатель

Назначение

• Первый позиционный параметр. Имя пользователя.

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

Отобразите обновленный список пользователей, используя команду display .

Чтобы изменить значение любого поля учетной записи кроме имени, используется команда modify, параметры которой совпадают с командой add. Для удаления значения какого-либо поля в записи нужно указать переключатель и не задавать никакого значения.

Если вы работаете в сети, то, используя утилиту gsec, вы можете с клиентского компьютера работать с базой данных безопасности на серверной машине или на любой другой машине, находящейся в сети. Для этого нужно при запуске утилиты добавить переключатель – database. Например, можно ввести (одной строкой):

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

Если в именах каталогов, которые включаются в путь к базе данных безопасности, присутствуют пробелы, то все значение переключателя – database должно заключаться в кавычки. Например, необходимо использовать кавычки в следующем случае (это размещение базы данных безопасности Firebird по умолчанию):

Поля UID, GID, fname, mname и lname сервером базы данных в настоящий момент не используются. Вы можете помещать в них любые данные.

Для удаления любой учетной записи пользователя кроме SYSDBA используется команда DELETE:

Пользователя SYSDBA вы никак удалить не сможете. Для завершения работы с утилитой gsec введите:

и нажмите клавишу Enter. Для выхода из окна командной строки введите exit или закройте окно обычным для Windows способом.

Те же действия можно выполнить при использовании программы IBExpert. Запустите программу IBExpert. Щелкните мышью по элементу меню Tools и в списке выберите User Manager. Появится окно User Manager. В выпадающем списке Server выберите ( local ).

Щелкните по кнопке Connect справа от выпадающего списка Server. Появится окно Server Login.

Рис. 1. Диалоговое окно соединения с сервером базы данных

В поле Login уже будет задано имя пользователя SYSDBA. Вам нужно в поле Password ввести пароль masterkey (или другой, если вы изменили значение пароля) и щелкнуть по кнопке ОК. Появится список учетных записей, который будет содержать только одного пользователя SYSDBA.

Рис. 2. Окно просмотра и изменения списка пользователей

Щелкните по кнопке Add, в появившемся окне New User введите имя пользователя (имя пользователя вы можете вводить в любом регистре, символы все равно будут появляться в верхнем регистре) и дважды введите пароль в поля Password и в Confirm Password. Щелкните по ОК. В список будет добавлена новая учетная запись пользователя.

Рис. 3. Добавление в список нового пользователя

Для изменения существующей записи (изменять можно любое поле кроме имени пользователя) нужно щелкнуть по кнопке Edit или дважды щелкнуть мышью по нужной строке и в появившемся окне изменить желаемые поля.

Для удаления существующей записи щелкните по кнопке Delete и в диалоговом окне подтвердите удаление.

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

Если вы одновременно работаете в IBExpert и используете утилиту gsec или другую программу для добавления или изменения учетных записей, то для того, чтобы увидеть в списке IBExpert новое состояние списка, нужно щелкнуть по кнопке Refresh.

Как и в случае с утилитой gsec вы можете в IBExpert просматривать и корректировать учетные записи пользователей и на других компьютерах сети. Для этого в поле Server нужно набрать имя компьютера в сети и щелкнуть по кнопке Connect. Здесь вы также можете работать и в том случае, когда база данных безопасности располагается на диске с закрытым для других компьютеров доступом.

Аналогичными средствами работы с учетными записями пользователей обладает и программа SQLHammer .

Создание программы для работы с учетными записями пользователей с использованием компонентов FIBPlus

Используя среду разработки Delphi или C ++ Builder и компоненты FIBPlus, вы можете написать собственную программу для работы с учетными записями пользователя. Напишем программу в Delphi и в C ++ Builder .

Запустите Delphi или C ++ Builder, создайте новое приложение. Положите на форму панель, очистив поле Caption и сделав выравнивание по верхнему краю. Это будет панель инструментов. Положите на панель кнопки, которые будут выполнять следующие функции: Refresh для выполнения обновления списка, Add для добавления новой записи, Edit для изменения текущей записи, Delete для удаления текущей записи, Server для выбора компьютера в сети, на котором будет просматриваться база данных безопасности.

Положите на форму компонент главного меню и создайте следующие элементы меню:

Рис. 4. Главное меню программы работы с учетными записями пользователей

Положите также контекстное меню и создайте у него два элемента — Edit и Delete .

С закладки Additional положите на форму компонент StringGrid, в котором и будут размещаться все строки списка пользователей. Для компонента задайте выравнивание по всей свободной поверхности формы (Align = alClient ), количество столбцов ColCount = 4, количество фиксированных столбцов FixedCols = 0, количество фиксированных строк Fixed Rows = 1 (здесь будет располагаться заголовок вашей таблицы). Раскройте свойство Options , щелкнув мышью слева от названия свойства по символу +, и установите в True значение подсвойства goRowSelect (будет отмечаться вся выбранная строка, а не отдельные ячейки). Выберите из выпадающего списка PopupMenu имя вашего контекстного меню. Установите в 2 количество строк RowCount , чтобы выводились, по меньшей мере, заголовок и строка пользователя SYSDBA .

Читайте также:  Linux debian installed packages

Положите на форму компоненты ImageList и ActionList .

С закладки FIBPlusServices положите на форму компонент TpFIBSecurityService. Установите его имя в SecurityService1. В поле UserName введите SYSDBA.

Теперь ваша форма должна выглядеть приблизительно следующим образом:

Рис. 5. Программа работы с учетными записями пользователей

Компонент ImageList заполняется пиктограммами, которые будут использоваться в главном и контекстном меню при помощи элементов компонента ActionList. В компоненте ActionList создайте четыре действия ( actions ) для обновления, добавления, редактирования и удаления.

Рис. 6. Элементы компонента ActionList

Основная задача — написать обработчики различных событий вашей программы. Но сначала нужно создать три формы, выполняющие соединение с сервером и с базой данных безопасности и осуществляющие добавление и изменение учетных записей.

Вначале две простенькие формы. Первая (FormServer ) позволяет выбрать сервер в сети и используемый протокол:

Рис. 7. Форма выбора сервера в локальной сети

Здесь пользователь должен ввести имя сервера в его локальной сети (на самом деле это может быть любой компьютер в сети — не обязательно именно сервер) и из выпадающего списка выбрать используемый протокол: Local , NamedPipe , SPX или TCP.

Вторая форма (FormServerLogin ) дает возможность ввести пароль пользователя SYSDBA (напомним — только этот пользователь имеет право просматривать и корректировать учетные записи пользователей).

Рис. 8. Форма задания пароля

Вернемся в главную форму. Вначале создадим процедуру отображения списка пользователей и функцию соединения с базой данных безопасности. В раздел private описания формы нужно поместить их прототипы:

Функция соединения с базой данных безопасности:

В блоке try делается попытка соединиться с базой данных безопасности. При этом появляется окно запроса на ввод пароля пользователя. Если возникли ошибки (например, неверный пароль), то выдается сообщение, действиям списка присваивается недоступное состояние, что переводит соответствующие кнопки и элементы меню в недоступное состояние, а функция возвращает False . При удачном соединении функция возвращает True .

Процедура ShowUsers отображает список пользователей в сетке StringGrid.

Для отображения списка пользователей нужно вызвать метод DisplayUsers компонента SecurityService. Данные о пользователях помещаются в список UserInfo. Количество элементов в списке содержится в свойстве UserInfoCount .

Нужно написать следующий обработчик события появления формы (FormShow ):

Основную функциональность программы реализуем через компонент ActionList. Мы создали в нем четыре элемента. Необходимо связать элементы обоих меню и кнопки быстрого доступа с соответствующими действиями. Напишем программный код.

Обработчик обновления выглядит совсем просто:

Для выполнения добавления нового пользователя в список и изменения данных существующего пользователя нужно создать новую форму FormAddUser. Разместите на форме метки, поля редактирования и две кнопки — OK и Cancel .

Рис. 9. Форма для добавления/изменения записи пользователя

В описании формы в Delphi в разделе public опишите переменную:

Вызывающий модуль будет присваивать этой переменной значение 0, если форма используется для добавления новой записи, и 1, если для изменения существующей.

Напишите следующий обработчик события OnShow:

Если требуется добавление нового пользователя, то поле ввода имени делается доступным, на него устанавливается фокус ввода, а кнопка ОК делается недоступной. В случае же редактирования существующей записи поле имени делается недоступным для изменения, фокус ввода устанавливается на поле ввода пароля.

Вернитесь в главный модуль и напишите код для выполнения добавления нового пользователя:

В начале полям ввода присваиваются пустые значения. Затем происходит обращение к форме FormAddUser . Если пользователь вышел из этой формы при щелчке по кнопке ОК, то возвращаемым значением будет mrOk . В этом случае формируются значения полей записи пользователя, добавляется новая запись (метод AddUser ) и заново отображается весь список.

Аналогичным образом выполняется изменение данных текущего пользователя:

Для изменения данных пользователя используется метод ModifyUser компонента SecurityService. С этим обработчиком свяжите также событие OnDblClick (двойной щелчок мышью) компонента StringGrid .

Для удаления текущего элемента списка напишите следующий код:

В начале проверяется, не является ли текущий элемент пользователем SYSDBA. Затем после подтверждения удаления в свойство UserName компонента SecurityService помещается имя пользователя и вызывается метод DeleteUser для удаления пользователя с этим именем.

Наконец напишите обработчик щелчка по кнопке Server и свяжите с этим обработчиком соответствующий элемент меню.

При запуске программы на выполнение все кнопки и элементы меню, кроме элементов Server, будут иметь недоступное состояние. После успешного выбора сервера все элементы управления программой становятся доступными для пользователя (в методе ConnectToDatabase ). Если при обращении к серверу произошли ошибки, эти элементы останутся недоступными.

Запустите программу на выполнение. Убедитесь в ее полной функциональности. Если у вас есть под руками подходящая локальная сеть, поэкспериментируйте с разными компьютерами в сети, проверьте, какие протоколы поддерживаются.

Если сети нет, можно эмулировать сеть на одном компьютере. Для этого нужно при выборе сервера ввести имя localhost .

Существует множество инструментов для работы с учетными записями пользователя. Кроме того, вы можете написать собственную программу отображения и изменения учетных записей.

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

Ни в каком поле учетной записи не используйте букв кириллицы.

Создав нового пользователя в базе данных безопасности, вы можете от его имени создавать и изменять базы данных на этом компьютере. Но это уже совсем другая история. См. статью на нашем сайте «Создание и изменение базы данных в InterBase/ Firebird ».

Оцените статью