роли соединение и доступ к таблице
Модератор: kdv
роли соединение и доступ к таблице
Имеется пользователь testuser.
Create role myrole;
Commit;
Grant all on test to myrole;
Grant myrole to testuser;
Connect ‘d:\basaOfData\bd.gdb’ user ‘testuser’ password ‘test’ role ‘myrole’;
Database: ‘d:\basaOfData\bd.gdb’, user testuser, role: myrole
Select * from test;
Statement failed, SQLCODE = -551
no permission for read/select access to table TEST
Выполнив запрос от sysdba
Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘TESTUSER’;
Получаю : M TESTUSER
Выполнив запрос от sysdba
Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘MYROLE’;
Получаю :
S MYROLE
U MYROLE
I MYROLE
D MYROLE
R MYROLE
почему нет разрешения?
Create role myrole;
Commit;
Grant all on test to myrole;
Grant myrole to testuser;
Connect ‘d:\basaOfData\bd.gdb’ user ‘testuser’ password ‘test’ role ‘myrole’;
Database: ‘d:\basaOfData\bd.gdb’, user testuser, role: myrole
Select * from test;
Statement failed, SQLCODE = -551
no permission for read/select access to table TEST
Выполнив запрос от sysdba
Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘TESTUSER’;
Получаю : M TESTUSER
Выполнив запрос от sysdba
Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘MYROLE’;
Получаю :
S MYROLE
U MYROLE
I MYROLE
D MYROLE
R MYROLE
почему нет разрешения?
Re: роли соединение и доступ к таблице
Код: Выделить всё
Grant all on test to ROLE myrole;
Re: роли соединение и доступ к таблице
Drop role myrole;
Commit;
Create role myrole;
Commit;
Grant all on test to ROLE myrole;
Statement faild, SQLCODE = -104
Dynamic SQL Error
-SQL error code = -104
-Token unknown – line 1,char 21
-ROLE
Commit;
Create role myrole;
Commit;
Grant all on test to ROLE myrole;
Statement faild, SQLCODE = -104
Dynamic SQL Error
-SQL error code = -104
-Token unknown – line 1,char 21
-ROLE
Re: роли соединение и доступ к таблице
А у меня работает. Как и должно.
1. Какая версия сервера ?
2. Полный результат запроса
1. Какая версия сервера ?
2. Полный результат запроса
Код: Выделить всё
SELECT * FROM RDB$USER_PRIVILEGES WHERE RDB$USER = 'MYROLE'
Re: роли соединение и доступ к таблице
Версия Interbase 7.5
В первом сообщении я все описал.
Вы посоветовали уточнить назначение прав для пользователя, однако, как
я показал во втором сообщении это вызвало исключение с кодом ошибки
-104. Таким образом результат остается прежним, именно, что при подсоединении к базе данных с ролью не действуют разрешения назначенные роли. При обращении к таблице базы данных имею
Select * from test;
Statement failed, SQLCODE = -551
no permission for read/select access to table TEST
При обращении к системной таблице, уже от sysdba, имею
Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘TESTUSER’;
Получаю : M TESTUSER (почему rdb@privilege = M? и что это означает)
Выполнив запрос, также от sysdba имею
Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘MYROLE’;
Получаю :
S MYROLE
U MYROLE
I MYROLE
D MYROLE
R MYROLE
Как будто все верно, но результата нет.
Если разрешения для таблицы назначить непосредственно пользователю, то результат, как и должен быть соответствует запросу.
В первом сообщении я все описал.
Вы посоветовали уточнить назначение прав для пользователя, однако, как
я показал во втором сообщении это вызвало исключение с кодом ошибки
-104. Таким образом результат остается прежним, именно, что при подсоединении к базе данных с ролью не действуют разрешения назначенные роли. При обращении к таблице базы данных имею
Select * from test;
Statement failed, SQLCODE = -551
no permission for read/select access to table TEST
При обращении к системной таблице, уже от sysdba, имею
Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘TESTUSER’;
Получаю : M TESTUSER (почему rdb@privilege = M? и что это означает)
Выполнив запрос, также от sysdba имею
Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘MYROLE’;
Получаю :
S MYROLE
U MYROLE
I MYROLE
D MYROLE
R MYROLE
Как будто все верно, но результата нет.
Если разрешения для таблицы назначить непосредственно пользователю, то результат, как и должен быть соответствует запросу.
Re: роли соединение и доступ к таблице
порядок действий
1. создать роль
2. включить в нее пользователя
3. дать роли права.
M - это membership. Тут должно быть все расписано:
http://www.ibase.ru/devinfo/sqlroles.htm
ваш пример повторил на IB 7.5 на employee.gdb, все работает
- убрал права PUBLIC на COUNTRY и EMPLOYEE
- create role MYROLE
- grant myrole to dima;
- grant all on employee to myrole
затем коннект под dima с ролью myrole. ОК.
select * from country - ошибка, нет прав
select * from employee - нет ошибки.
1. создать роль
2. включить в нее пользователя
3. дать роли права.
M - это membership. Тут должно быть все расписано:
http://www.ibase.ru/devinfo/sqlroles.htm
ваш пример повторил на IB 7.5 на employee.gdb, все работает
- убрал права PUBLIC на COUNTRY и EMPLOYEE
- create role MYROLE
- grant myrole to dima;
- grant all on employee to myrole
затем коннект под dima с ролью myrole. ОК.
select * from country - ошибка, нет прав
select * from employee - нет ошибки.
Re: роли соединение и доступ к таблице
Ну так с этого нужно было начинать.zva писал(а):Версия Interbase 7.5
Всегда
Я не просил этот запрос.zva писал(а):Select rdb@privilege, rdb@user from rdb$user_privileges where rdb$user = ‘TESTUSER’;
Впрочем, для IB это уже не важно.
Re: роли соединение и доступ к таблице
Спасибо всем!