powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
8 сообщений из 8, страница 1 из 1
Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
    #38948101
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Имеется скрипт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
set term ^;
execute block as
begin
  execute statement 'drop role "Министр"';
  when any do begin end
end
^
set term ;^
commit;

create role "Министр";
commit;

recreate table test(id int);
commit;
insert into test values(123654);
commit;
grant select on test to "Министр";
commit;

create or alter user ivanoff password '123';
commit;
revoke all on all from ivanoff;
grant "Министр" to ivanoff;
commit;
show grants;

set term ^;
execute block returns(who_am_i varchar(31), whats_my_role varchar(31), id int) as
begin
  for
      execute statement 'select current_user, current_role, current_transaction from rdb$database'
      on external ('localhost:' || rdb$get_context('SYSTEM','DB_NAME'))
         as user 'ivanoff' password '123' role  '"Министр"' 
      into who_am_i, whats_my_role, id
  do
      suspend;
end
^

Выполняю на консоли линуха, чарсет консоли = utf8:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$ /opt/fb30ss/bin/isql localhost/3333:e30 -i non_ascii_role.sql -ch utf8
After line 22 in file c3511w.sql
Warning: ALL on ALL is not granted to IVANOFF.

/* Grant permissions for this database */
GRANT SELECT ON TEST TO ROLE Министр
GRANT Министр TO IVANOFF

WHO_AM_I                        WHATS_MY_ROLE                             ID
=============================== =============================== ============
IVANOFF                          NONE                                      258

Пробую по-другому:

Код: plaintext
1.
$ /opt/fb30ss/bin/isql localhost/3333:e30 -ch utf8 -user ivanoff -pas 123 -role "Министр"
Database:  localhost/3333:e30, User: ivanoff, Role: Министр

-- но получаю то же самое:

Код: plaintext
1.
2.
3.
4.
SQL> select current_role from rdb$database;

ROLE
===============================
NONE


Как правильно указать роль при коннекте, если она с кириллицей и прочими non-ascii символами ?

PS. LI-T3.0.0.31810
...
Рейтинг: 0 / 0
Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
    #38948141
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

через оператор CONNECT попробуй. Вообще недавно вроде подымался такой вопрос, но только с Trusted Auth CORE-4743 .
...
Рейтинг: 0 / 0
Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
    #38948144
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

хотя нет там было про имя пользователя
...
Рейтинг: 0 / 0
Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
    #38948160
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисчерез оператор CONNECT попробуй.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
$ /opt/fb30ss/bin/isql -q
SQL> set names utf8;
SQL> connect 'localhost/3333:e30' user 'ivanoff' password '123' role '"Министр"';
Database:  'localhost/3333:e30', User: ivanoff, Role: "Министр"
SQL> select current_role from rdb$database;

ROLE
===============================
NONE
...
Рейтинг: 0 / 0
Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
    #38948174
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

на всякий случай глянь как он там в системной таблице

Код: sql
1.
2.
select rdb$role_name
from rdb$roles



И ещё попробуй через
Код: sql
1.
SET ROLE "Министр";
...
Рейтинг: 0 / 0
Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
    #38948188
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
Код: sql
1.
2.
select rdb$role_name
from rdb$roles

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> set list on; select * from rdb$roles;

RDB$ROLE_NAME                   RDB$ADMIN                                                                
RDB$OWNER_NAME                  SYSDBA                                                                   
RDB$DESCRIPTION                 <null>
RDB$SYSTEM_FLAG                 1
RDB$SECURITY_CLASS              <null>

RDB$ROLE_NAME                    Министр                                                                   
RDB$OWNER_NAME                  SYSDBA                                                                   
RDB$DESCRIPTION                 <null>
RDB$SYSTEM_FLAG                 0
RDB$SECURITY_CLASS              <null>

Симонов ДенисИ ещё попробуй через Не интересно. Надо коннект делать через ES/EDS, а там это не катит.
...
Рейтинг: 0 / 0
Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
    #38948196
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

мне интересно работает или нет. Я вот попробовал

Код: plaintext
1.
2.
3.
4.
SQL> connect 'localhost:test' user 'ivanoff' password '123';
Database:  'localhost:test', User: ivanoff
SQL> set role "Министр";
Statement failed, SQLSTATE = 0P000
Role Министр is invalid or unavailable
...
Рейтинг: 0 / 0
Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
    #38948210
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

проблема в том, что и оператор connect и EB скрывают ошибку. Туда вообще в качестве роли можно написать что угодно. А вот SET ROLE сразу ругнулась.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> connect 'localhost:test' user 'ivanoff' password '123' role '"МеняНету"';
Database:  'localhost:test', User: ivanoff, Role: "МеняНету"
SQL> select current_role from rdb$database;

ROLE
===============================
NONE

SQL> set role "МеняНету";
Statement failed, SQLSTATE = 0P000
Role МеняНету is invalid or unavailable
SQL>
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Роль с non-ascii символами: создаётся и грантуется ОК, но коннект с ней невозможен
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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