![]() |
|
Модераторы: Akella |
![]()
|
|
| Lex_81 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 10.10.2007 Репутация: нет Всего: нет |
Господа! Требуется помощь! Может конечно задаю тривиальный вопрос, но сам никак не могу догнать...
Завожу новых пользователей на сервере для удаленной работы с базой данных (FireBird) (помимо SYSDBA), а как дело доходит до соединения то пишет: "....Your User name and password are not defined...." В чем проблема - вроде и привелегии раздал для объектов БД (<GRANT>)? Чего не так делаю? Помогите!! Очень надо!! Если обобщить вопрос, то имелось ввиду - как подключиться к БД с именем пользователя отличным от SYSDBA? Заранее спасибо! Это сообщение отредактировал(а) Lex_81 - 10.10.2007, 09:22 |
|||
|
||||
| Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Ошибок может быть очень много.
1. Как вы создаете пользователей ? 2. Используется ли механизм ролей для подключения ? 3. Каким образом на клиенте вы подключаете конкретного пользователя ? 4. пароль чувствителен к регистру. |
|||
|
||||
| Lex_81 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 10.10.2007 Репутация: нет Всего: нет |
Создаю в SQLHAmmer'е, можно и в gsec....
Механизм ролей не использую - пользователей всего 2! Использую оператор <GRANT> Вроде нашел способ подключения: Подключился к системной таблице SECURITY - и там установил для пользователей в поле PRIVILEGE значение 1 (было NULL)! Теперь вроде подключается - но возникает законный вопрос - если поле числовое то какая градация привелегий существует (от 1 до 100 например) и чему соответствует (INSERT, UPDATE, DELETe и т.д.)? Может у кого-нить есть соображения по этому поводу? Это сообщение отредактировал(а) Lex_81 - 10.10.2007, 09:59 |
|||
|
||||
| Lex_81 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 10.10.2007 Репутация: нет Всего: нет |
....К тому же есть мнение (и не только мое) что доступ к таблице SECURITY в FireBird 2.0 закрыт!!! Как быть с этим?
|
|||
|
||||
| Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Теперь не понимаю смысла вопроса. Во первых, в таблице SECURITY в ручную ничего менять не стоит, если не уверен. Привелегии грантуются по таблицам и конкретно по полям. INSERT, UPDATE, SELECT, DELETE, REFERENCES - это виды операций над полями таблиц и EXECUTE над ХП. Насколько я знаю, нельзя разрешить user1 выполнять UPDATE над table1.field1, значение которого, допустим, больше 1000, прямыми возможностями (GRANT). Если стоит задача запретить пользователю изменять запись, id которой больше n (или любое другое условие), то я бы написал триггер на событие ON UPDATE. А если SQLHammer не изменил таблицу SECURITY, то стоит скачать последнюю версию разве что. |
|||
|
||||
| Lex_81 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 10.10.2007 Репутация: нет Всего: нет |
нееет - все не так)) Может я не ясно выразился - прошу прощения!
Само поле PRIVILEGE - из системной таблицы SECURITY (имеет целочисленный формат данных). В этом поле у вновь заведенных юзеров стоит NULL в том числе и у SYSDBA! Как только я его изменил для пользователей на 1 - все заработало, т.е. я смог соединиться с БД от имени этого пользователя с привилегиями, заданными оператором <GRANT>! Из SQLHammer'a я собственно все это и проделал! А вопрос теперь собственно в следущем - якобы нельзя изменять таблицу SECURITY в FireBird 2.0 (доступа нет), а если не выставить 1 для пользователей в поле PRIVILEGE в этой таблице - то и приконнектиться к БД под этим пользователем будет нельзя! (будет писать тоже самое как и в первом посте). Есть ли способ соединиться с БД от имени пользователя отличного от SYBASE не обращаясь к данной системной таблице? Я просто не знаю как это сделать по-другому и данный способ я нашел чисто логическим путем (может и через Ж....)! Что касается оператора GRANT - то с ним я устанавливал привелегии не на отдельные поля, а на объекты БД целиком! Это сообщение отредактировал(а) Lex_81 - 12.10.2007, 09:49 |
|||
|
||||
| Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Во первых хочу сказать, что пользователи создаются на сервере. Соединение происходит с сервером. То есть для всех БД, обслуживаемых одним сервером, сохраняются одни и те же пользователи.
Во вторых. Можно соединиться с БД от имени любого пользователя, зарегистрированного на сервере. Вне зависимости от его полномочий. Оператор грант дает привелегии для работы с БД, а не серверными таблицами. В третьих. Соединиться с Бд под другим пользователем можно. Например в C++ Builder 6 \ Delphi 8 (может и более ранние версии) существует набор компонентов - InterBase Express, в нем компонент - TIBDatabase, а в нем можно задать имя пользователя и пароль. Добавлено через 6 минут и 15 секунд И еще вызывает вопросы ситуация, когда пользователи создаются без возможности соединения с БД. Версии Firebird и SQLHammer в студию. Это сообщение отредактировал(а) Anark1 - 10.10.2007, 20:55 |
|||
|
||||
| Lex_81 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 10.10.2007 Репутация: нет Всего: нет |
Епрст! Так это все понятно!
Да дело в том, что и не соединялось приложение под именами заведенных пользователей с БД, зарегистрированной на указанном сервере! В кратце - коль уж дело так обстоит - вот поcледовательность действий: 1) создал БД и завел пользователей на сервере 2) наделил пользователей полномочиями (это все в Хаммере) 3) написал приложение после попытки законектиться под именем(-ами) этого(-их) пользователя(-ей) - вылетала ошибка (1 пост) 4) прыгал вокруг сервера и пытался определить - в чем собственно дело? (пересоздал всех пользователей из GSEC - все без изменений) 5) нашел способ следующего плана (определил косвенным путем, перелопатив ряд статей) - через тот же Хаммер подключился к системной таблице SECURITY (там хранятся все сведения о пользователях данного сервера как я понимаю в виде записей с несколькими полями, в том числе и о SYSDBA). В этой таблице присутствует поле PRIVILEGE, которое по-умолчанию - NULL для всех пользователей! И вот пока я не изменил для заведенных пользователей данное поле на "1" законнектится под их именами к своей БД я не мог!!!! Вот я и хотел знать - почему? Может не отрабатывает это поле автоматом после создания пользователей? Может нарушена последовательность действий (хотя вряд ли)? Может косяк за сервером? Просто хотел узнать - может кто сталкивался или знает причину такой ситуации - я понимаю, она - не нормальная? Firebird-1.5.0.4306; SQLHammer - 1.7 Это сообщение отредактировал(а) Lex_81 - 11.10.2007, 21:57 |
|||
|
||||
| Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Firebird 2.0.3
SQLHammer 1.8.0.125 (ныне BlazeTop) http://devrace.com/ru/blazetop/interbase/download/ Других причин не вижу. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Lex_81, какой-то косяк у тебя
Только что все проделал как и ты. FireBird 1.5.3 IBExpert 2007.09.02 Создал пользователя (PRIVILEGE стоит NULL) Подключаюсь к БД через IBExpert (есть права на чтение одной таблицы у public) Все нормально читается -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Lex_81 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 10.10.2007 Репутация: нет Всего: нет |
Deniz! Ты, как я понимаю, подключался все-таки не из приложения, а из дизайнера БД!
Если я буду подключаться из того же Хаммера, так у меня тоже все нормально соединяется, без внесения каких-либо изменений в системную таблицу, а вот косяки как раз при подключении из-под приложения. (приложение написано в Delphi 6+стандартный набор компонентов для работы с InterBase на одноименной закладке в палитре) Это сообщение отредактировал(а) Lex_81 - 12.10.2007, 07:43 |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Lex_81, как раз не из дизайнера.
Специально создал тестовое приложение и проверил подключение (FIBPlus, IBX) все работает. Delphi 7 -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Разницы нет через что подключаться, если все настроено корректно.
Lex_81, можно посмотреть настройки подключения на клиенте ? |
|||
|
||||
| Lex_81 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 10.10.2007 Репутация: нет Всего: нет |
Anark1, а какие там собственно настройки! (адрес сервера да путь к БД). Если удается подключиться под SYSDBA, то и под другими пользователями возможно подключение (настройки-то одни и те же)! Или ты что-то еще имеешь в виду? Я немного вопрос не понимаю.
Это сообщение отредактировал(а) Lex_81 - 12.10.2007, 09:17 |
|||
|
||||
| Lex_81 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 10.10.2007 Репутация: нет Всего: нет |
Ладно ребят! Спасибо всем за помощь! Попробую сменить версию сервера и возможно набор компонентов для работы с InterBase.
Это сообщение отредактировал(а) Lex_81 - 12.10.2007, 09:53 |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |