powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поломка базы
25 сообщений из 32, страница 1 из 2
Поломка базы
    #39901755
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

FB 2.5.8

Привезли базу. При коннекте не под SYSDBA и попытке запроса из RDB$DATABASE ругается, что нет грантов.
Код: powershell
1.
2.
3.
SQL> select * from RDB$DATABASE;
Statement failed, SQLSTATE = 28000
no permission for read/select access to TABLE RDB$DATABASE


В чем причина поломки?
Это как-нибудь вылечить можно?

С уважением, Polesov.
...
Рейтинг: 0 / 0
Поломка базы
    #39901758
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это надо именно лечить? может кто сознательно гранты отобрал?
По идее после б/р гранты на системные таблицы должны стать дефолтными.
б/р проходит без ошибок?
...
Рейтинг: 0 / 0
Поломка базы
    #39901759
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

мне кажется это не поломка. Кто-то нарочно такую типа "защиту" поставил.
попробуй

Код: sql
1.
GRANT SELECT ON RDB$DATABASE TO PUBLIC;
...
Рейтинг: 0 / 0
Поломка базы
    #39901761
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky
Это надо именно лечить? может кто сознательно гранты отобрал?
По идее после б/р гранты на системные таблицы должны стать дефолтными.
б/р проходит без ошибок?


Утверждается, что гранты специально никто не отбирал.
За идею про б/р спасибо, щас проверю.
...
Рейтинг: 0 / 0
Поломка базы
    #39901764
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Создал пустую БД, запрос ничего не вернул
Код: sql
1.
2.
3.
select *
  from RDB$USER_PRIVILEGES p
 where p.RDB$RELATION_NAME = 'RDB$DATABASE'


Дал гранты
Код: sql
1.
grant all on RDB$DATABASE to public;


Запрос из RDB$USER_PRIVILEGES вернул 5 записей (внизу кусок выборки)
Код: sql
1.
2.
3.
4.
5.
PUBLIC	SYSDBA	S	0	RDB$DATABASE
PUBLIC	SYSDBA	I	0	RDB$DATABASE
PUBLIC	SYSDBA	U	0	RDB$DATABASE
PUBLIC	SYSDBA	D	0	RDB$DATABASE
PUBLIC	SYSDBA	R	0	RDB$DATABASE


Мне кажется, давать гранты на системные таблицы неправильно.
...
Рейтинг: 0 / 0
Поломка базы
    #39901793
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, б/р помог. Осталась не выяснена причина поломки.
...
Рейтинг: 0 / 0
Поломка базы
    #39901796
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пионЭры приходили?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901833
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

пионЭры приходили?

Сие не ведомо. Но выяснилось, что слетели гранты на все системные таблицы.
...
Рейтинг: 0 / 0
Поломка базы
    #39901836
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 13:44, Polesov пишет:
>
> Сие не ведомо. Но выяснилось, что слетели гранты на все системные таблицы.

они не слетели.
они ПОЯВИЛИСЬ.
и отнюдь не из воздуха.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901852
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

они не слетели.
они ПОЯВИЛИСЬ.
и отнюдь не из воздуха.

Не понял глубины мысли.
...
Рейтинг: 0 / 0
Поломка базы
    #39901859
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovНе понял глубины мысли.

Раскрой глаза, напряги мозг:
https://www.sql.ru/forum/actualthread.aspx?tid=1319380
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901863
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 14:10, Polesov пишет:
>
> Не понял глубины мысли.

выполни свой запрос к RDB$USER_PRIVILEGES
на "поломатой" базе и на нормальной.
сравни.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901879
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Раскрой глаза, напряги мозг:
https://www.sql.ru/forum/actualthread.aspx?tid=1319380

Это не тот случай. В обоих случаях гарантированно FB одной и той же версии.
...
Рейтинг: 0 / 0
Поломка базы
    #39901884
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovПривезли базу.
PolesovВ обоих случаях гарантированно FB одной и той же версии.

"Люди лгут." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901888
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

выполни свой запрос к RDB$USER_PRIVILEGES
на "поломатой" базе и на нормальной.
сравни.


Там около 44 тысяч записей - замумукаешься сравнивать.

На вновь созданной базе запрос
Код: sql
1.
2.
3.
select *
  from RDB$USER_PRIVILEGES p
 where p.RDB$RELATION_NAME starting with 'RDB$'


Возвращает полный доступ SYSDBA к таблицам RDB$ROLES, RDB$PAGES и RDB$FORMATS

В "поломатой" БД то же самое + зачем-то грант на роль RDB$ADMIN
...
Рейтинг: 0 / 0
Поломка базы
    #39901889
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov
В общем, б/р помог. Осталась не выяснена причина поломки.

Заодно объясни, что если уж
Polesov
Привезли базу

- то база должна быть в форме бэкапа.
...
Рейтинг: 0 / 0
Поломка базы
    #39901891
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

PolesovПривезли базу.

PolesovВ обоих случаях гарантированно FB одной и той же версии.

"Люди лгут." (с)


Могу точно сказать, что БД создавалась на последнем июньском релизе FB, а эксплуатировалась на предпоследнем снапшоте.
Но, думаю, это ни при чем.
...
Рейтинг: 0 / 0
Поломка базы
    #39901893
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё, нет, базу привезли в виде базы.
...
Рейтинг: 0 / 0
Поломка базы
    #39901896
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov
ёёёёё, нет, базу привезли в виде базы.

А я что сказал?
...
Рейтинг: 0 / 0
Поломка базы
    #39901900
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov
Это не тот случай
Ты проверил наличие непустого RDB$SECURITY_CLASS в RDB$DATABASE ?
...
Рейтинг: 0 / 0
Поломка базы
    #39901902
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё
Polesov
ёёёёё, нет, базу привезли в виде базы.

А я что сказал?


ёёёёё
база должна быть в форме бэкапа
...
Рейтинг: 0 / 0
Поломка базы
    #39901906
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
Polesov
Это не тот случай
Ты проверил наличие непустого RDB$SECURITY_CLASS в
RDB$DATABASE ?

Сейчас там null
...
Рейтинг: 0 / 0
Поломка базы
    #39901941
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я разве спрашивал про "сейчас" ?
...
Рейтинг: 0 / 0
Поломка базы
    #39901950
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, он там и был - его никто не менял.
...
Рейтинг: 0 / 0
Поломка базы
    #39903515
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Апну тему.

Проблема проявлялась в том, что на системные таблицы слетели PUBLIC гранты
на SELECT, т.е. при подключении не под SYSDBA запрос вызывал ошибку:
Код: sql
1.
2.
3.
SQL> select * from RDB$DATABASE;
Statement failed, SQLSTATE = 28000
no permission for read/select access to TABLE RDB$DATABASE


Просмотр в IBExpert значений поля RDB$ACL в таблице RDB$SECURITY_CLASSES
показал, что есть значения, в которых отсутствует " all users: (*.*), privileges: (R) "

Для RDB$SECURITY_CLASS = 'SQL$1' значение поля RDB$ACL выглядит так
Код: powershell
1.
2.
3.
ACL version 1
	person: SYSDBA, privileges: (PCDWR)
	all users: (*.*), privileges: (R)



После выполнения запроса
Код: sql
1.
2.
3.
4.
5.
update RDB$SECURITY_CLASSES
   set RDB$ACL = ( select RDB$ACL
                     from RDB$SECURITY_CLASSES
                    where RDB$SECURITY_CLASS = 'SQL$1' )
 where RDB$SECURITY_CLASS <> 'SQL$1'

выяснилось, что гранты восстановились.

P.S. Все операции проводились на локальной копии базы.

Понятно, что лечить базу таким образом нельзя.

Каким образом связаны значения RDB$ACL в RDB$SECURITY_CLASSES и гранты на системные таблицы?
Какие действия могут привести к модификации значения RDB$ACL, в результате чего слетают гранты?
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поломка базы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]