Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поломка базы / 25 сообщений из 32, страница 1 из 2
12.12.2019, 11:39
    #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
12.12.2019, 11:42
    #39901758
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поломка базы
Это надо именно лечить? может кто сознательно гранты отобрал?
По идее после б/р гранты на системные таблицы должны стать дефолтными.
б/р проходит без ошибок?
...
Рейтинг: 0 / 0
12.12.2019, 11:43
    #39901759
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поломка базы
Polesov,

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

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


Утверждается, что гранты специально никто не отбирал.
За идею про б/р спасибо, щас проверю.
...
Рейтинг: 0 / 0
12.12.2019, 11:52
    #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
12.12.2019, 12:33
    #39901793
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поломка базы
В общем, б/р помог. Осталась не выяснена причина поломки.
...
Рейтинг: 0 / 0
12.12.2019, 12:39
    #39901796
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поломка базы
пионЭры приходили?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.12.2019, 13:44
    #39901833
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поломка базы
Мимопроходящий

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

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

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

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

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

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

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

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

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

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

"Люди лгут." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.12.2019, 14:49
    #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
12.12.2019, 14:49
    #39901889
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поломка базы
Polesov
В общем, б/р помог. Осталась не выяснена причина поломки.

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

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

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

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

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


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

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

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


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

Сейчас там null
...
Рейтинг: 0 / 0
12.12.2019, 15:31
    #39901941
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поломка базы
Я разве спрашивал про "сейчас" ?
...
Рейтинг: 0 / 0
12.12.2019, 15:40
    #39901950
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поломка базы
hvlad, он там и был - его никто не менял.
...
Рейтинг: 0 / 0
16.12.2019, 15:03
    #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
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поломка базы / 25 сообщений из 32, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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