2009-10-29 5 views
16

мне нужно предоставить привилегии для всех пользователей, я могу сделать:Oracle - предоставить привилегии всем пользователям

GRANT select on table TO user1; 
GRANT select on table TO user2; 
... 

Но есть много пользователей. Как я могу предоставить эту привилегию всем пользователям сразу?

Я пробовал:

GRANT select on table TO ALL; 

Но это не работает.

ответ

23
grant select on table to public; 

Но будьте осторожны, когда вы это сделаете - убедитесь, что это то, что вы действительно хотите сделать.

+1

Спасибо, это то, что мне нужно было сделать в моем школьном задании, но я не мог понять это. У меня было 99% заданий уже закончено, и это было последнее, что осталось :) –

7

Вы должны использовать роли. Предоставить разрешение на роли. предоставлять роли пользователям.

+0

Являются ли роли в Oracle «кумулятивными» или «непересекающимися»? В DB2 они являются кумулятивными - если вам предоставлена ​​роль, вы можете выполнять эти разрешения в любое время. В Informix роли разделены; вы используете оператор SET ROLE, чтобы установить, какая из них активна в настоящий момент, и в любое время вы можете использовать только предоставленные роли привилегии с текущей заданной ролью. (Разумеется, вы всегда можете использовать любые привилегии, предоставленные непосредственно вашему имени пользователя.) –

+0

a Роль подобна пользователю, но она скрывает за собой всех пользователей, которым предоставлена ​​эта роль. Лучшей практикой является предоставление разрешения на ролевую установку, а не для каждого пользователя отдельно. Я думаю, что Oracle больше похож на DB2. – Dani

+0

@ Дани - спасибо. Кислотный тест: «Есть ли инструкция SET ROLE в Oracle». Если нет, он должен работать как DB2; если он есть, это может быть больше похоже на Informix. –

Смежные вопросы