GRANT
GRANT â опÑеделиÑÑ Ð¿Ñава доÑÑÑпа
СинÑакÑиÑ
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[, ...] | ALL [ PRIVILEGES ] }
ON { [ TABLE ] имÑ_ÑаблиÑÑ [, ...]
| ALL TABLES IN SCHEMA имÑ_ÑÑ
ÐµÐ¼Ñ [, ...] }
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( имÑ_ÑÑолбÑа [, ...] )
[, ...] | ALL [ PRIVILEGES ] ( имÑ_ÑÑолбÑа [, ...] ) }
ON [ TABLE ] имÑ_ÑаблиÑÑ [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { { USAGE | SELECT | UPDATE }
[, ...] | ALL [ PRIVILEGES ] }
ON { SEQUENCE имÑ_поÑледоваÑелÑноÑÑи [, ...]
| ALL SEQUENCES IN SCHEMA имÑ_ÑÑ
ÐµÐ¼Ñ [, ...] }
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
ON DATABASE имÑ_бд [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON DOMAIN имÑ_домена [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON FOREIGN DATA WRAPPER имÑ_обÑÑÑки_ÑÑоÑонниÑ
_даннÑÑ
[, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON FOREIGN SERVER имÑ_ÑеÑвеÑа [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON { { FUNCTION | PROCEDURE | ROUTINE } имÑ_подпÑогÑÐ°Ð¼Ð¼Ñ [ ( [ [ Ñежим_аÑгÑменÑа ] [ имÑ_аÑгÑменÑа ] Ñип_аÑгÑменÑа [, ...] ] ) ] [, ...]
| ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA имÑ_ÑÑ
ÐµÐ¼Ñ [, ...] }
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON LANGUAGE имÑ_ÑзÑка [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
ON LARGE OBJECT oid_ÐÐ [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { { SET | ALTER SYSTEM } [, ... ] | ALL [ PRIVILEGES ] }
ON PARAMETER паÑамеÑÑ_конÑигÑÑаÑии [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
ON SCHEMA имÑ_ÑÑ
ÐµÐ¼Ñ [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { CREATE | ALL [ PRIVILEGES ] }
ON TABLESPACE Ñабл_пÑоÑÑÑанÑÑво [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON TYPE имÑ_Ñипа [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
GRANT имÑ_Ñоли [, ...] TO Ñказание_Ñоли [, ...]
[ WITH ADMIN OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
ÐдеÑÑ Ñказание_Ñоли:
[ GROUP ] имÑ_Ñоли
| PUBLIC
| CURRENT_ROLE
| CURRENT_USER
| SESSION_USERÐпиÑание
Ðоманда GRANT Ð¸Ð¼ÐµÐµÑ Ð´Ð²Ðµ оÑновнÑе ÑазновидноÑÑи: пеÑÐ²Ð°Ñ Ð½Ð°Ð·Ð½Ð°ÑÐ°ÐµÑ Ð¿Ñава Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к обÑекÑам баз даннÑÑ
(ÑаблиÑам, ÑÑолбÑам, пÑедÑÑавлениÑм, ÑÑоÑонним ÑаблиÑам, поÑледоваÑелÑноÑÑÑм, базам даннÑÑ
, обÑÑÑкам ÑÑоÑонниÑ
даннÑÑ
, ÑÑоÑонним ÑеÑвеÑам, ÑÑнкÑиÑм, пÑоÑедÑÑам, пÑоÑедÑÑнÑм ÑзÑкам, болÑÑим обÑекÑам, паÑамеÑÑам конÑигÑÑаÑии, ÑÑ
емам, ÑаблиÑнÑм пÑоÑÑÑанÑÑвам или Ñипам), а вÑоÑÐ°Ñ Ð½Ð°Ð·Ð½Ð°ÑÐ°ÐµÑ Ð¾Ð´Ð½Ð¸ Ñоли Ñленами дÑÑгиÑ
. ÐÑи ÑазновидноÑÑи во многом поÑ
ожи, но имеÑÑ Ð´Ð¾ÑÑаÑоÑно оÑлиÑий, ÑÑÐ¾Ð±Ñ ÑаÑÑмаÑÑиваÑÑ Ð¸Ñ
оÑделÑно.
GRANT Ð´Ð»Ñ Ð¾Ð±ÑекÑов баз даннÑÑ
ÐÑа ÑазновидноÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ GRANT даÑÑ Ð¾Ð´Ð½Ð¾Ð¹ или неÑколÑким ÑолÑм опÑеделÑннÑе пÑава Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к обÑекÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐÑи пÑава добавлÑÑÑÑÑ Ðº ÑпиÑÐºÑ Ð¸Ð¼ÐµÑÑиÑ
ÑÑ, еÑли ÑÐ¾Ð»Ñ Ñже наделена какими-Ñо пÑавами.
ÐлÑÑевое Ñлово PUBLIC ознаÑаеÑ, ÑÑо пÑава даÑÑÑÑ Ð²Ñем ÑолÑм, вклÑÑÐ°Ñ Ñе, ÑÑо могÑÑ Ð±ÑÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð¿Ð¾Ð·Ð¶Ðµ. PUBLIC можно воÑпÑинимаÑÑ ÐºÐ°Ðº неÑвно опÑеделÑннÑÑ Ð³ÑÑппÑ, в коÑоÑÑÑ Ð²Ñ
одÑÑ Ð²Ñе Ñоли. ÐÑÐ±Ð°Ñ ÐºÐ¾Ð½ÐºÑеÑÐ½Ð°Ñ ÑÐ¾Ð»Ñ Ð¿Ð¾Ð»ÑÑÐ¸Ñ Ð² ÑÑмме вÑе пÑава, даннÑе непоÑÑедÑÑвенно ей и ÑолÑм, Ñленом коÑоÑÑÑ
она ÑвлÑеÑÑÑ, а Ñакже пÑава, даннÑе Ñоли PUBLIC.
ÐÑли Ñказано WITH GRANT OPTION, полÑÑаÑÐµÐ»Ñ Ð¿Ñава, в ÑÐ²Ð¾Ñ Ð¾ÑеÑедÑ, Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°Ð²Ð°ÑÑ ÐµÐ³Ð¾ дÑÑгим. Ðез ÑÑого ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑаÑпоÑÑжаÑÑÑÑ Ñвоим пÑавом он не ÑможеÑ. ÐÑÑппе PUBLIC пÑаво пеÑедаÑи пÑава даÑÑ Ð½ÐµÐ»ÑзÑ.
ÐÑли Ñказано GRANTED BY, заданнÑм пÑаводаÑелем должен бÑÑÑ ÑекÑÑий полÑзоваÑелÑ. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо пÑедложение Ñеализовано ÑолÑко Ñади ÑовмеÑÑимоÑÑи Ñо ÑÑандаÑÑом SQL.
ÐÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи Ñвно даваÑÑ Ð¿Ñава Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к обÑекÑÑ ÐµÐ³Ð¾ владелÑÑÑ (обÑÑно ÑÑо полÑзоваÑелÑ, ÑоздавÑий обÑекÑ), Ñак как по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ Ð¸Ð¼ÐµÐµÑ Ð²Ñе пÑава. (Ðднако Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ÑиÑÑ ÑÐµÐ±Ñ Ð¿Ñав в ÑелÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи.)
ÐÑаво ÑдалÑÑÑ Ð¾Ð±ÑÐµÐºÑ Ð¸Ð»Ð¸ изменÑÑÑ ÐµÐ³Ð¾ опÑеделение пÑоизволÑнÑм обÑазом не ÑÑиÑаеÑÑÑ Ð½Ð°Ð·Ð½Ð°ÑаемÑм; оно неоÑÑемлемо ÑвÑзано Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем, Ñак ÑÑо оÑозваÑÑ ÑÑо пÑаво или даÑÑ ÐµÐ³Ð¾ комÑ-Ñо дÑÑÐ³Ð¾Ð¼Ñ Ð½ÐµÐ»ÑзÑ. (Ðднако Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ð¹ ÑÑÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, ÑпÑавлÑÑ ÑленÑÑвом в Ñоли, владеÑÑей обÑекÑом; Ñм. ниже.) ÐÐ»Ð°Ð´ÐµÐ»ÐµÑ Ñакже неÑвно полÑÑÐ°ÐµÑ Ð¿Ñаво ÑаÑпоÑÑÐ¶ÐµÐ½Ð¸Ñ Ð²Ñеми пÑавами Ð´Ð»Ñ Ñвоего обÑекÑа.
ÐозможнÑе пÑава:
SELECTINSERTUPDATEDELETETRUNCATEREFERENCESTRIGGERCREATECONNECTTEMPORARYEXECUTEUSAGESETALTER SYSTEMÐпÑеделÑннÑе ÑÐ¸Ð¿Ñ Ð¿Ñав, опиÑаннÑе в Разделе 5.7.
TEMPÐлÑÑеÑнаÑивное напиÑание
TEMPORARY.ALL PRIVILEGESÐаÑÑ Ñелевой Ñоли вÑе пÑава, пÑименимÑе к Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ. ÐлÑÑевое Ñлово
PRIVILEGESÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑм вPostgres Pro, Ñ Ð¾ÑÑ Ð² ÑÑандаÑÑе SQL оно ÑÑебÑеÑÑÑ.
СинÑакÑÐ¸Ñ FUNCTION ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° обÑÑнÑе, агÑегаÑнÑе и оконнÑе ÑÑнкÑии, но не на пÑоÑедÑÑÑ; Ð´Ð»Ñ Ð¿Ð¾ÑледниÑ
пÑедназнаÑен ÑинÑакÑÐ¸Ñ PROCEDURE. Также можно иÑполÑзоваÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ñ ROUTINE, оÑ
ваÑÑваÑÑий обÑÑнÑе, агÑегаÑнÑе и оконнÑе ÑÑнкÑии, а Ñакже пÑоÑедÑÑÑ, вне завиÑимоÑÑи Ð¾Ñ ÑоÑного Ñипа обÑекÑа.
Также можно даÑÑ Ñоли некоÑоÑое пÑаво Ð´Ð»Ñ Ð²ÑеÑ
обÑекÑов одного Ñипа в одной или неÑколÑкиÑ
ÑÑ
емаÑ
. ÐÑа ÑÑнкÑионалÑноÑÑÑ Ð² наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑаблиÑ, поÑледоваÑелÑноÑÑей, ÑÑнкÑий и пÑоÑедÑÑ. ALL TABLES ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð¸ на пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñо ÑÑоÑонними ÑаблиÑами Ñак же, как и ваÑÐ¸Ð°Ð½Ñ GRANT Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑного обÑекÑа. ALL FUNCTIONS ÑаÑпÑоÑÑÑанÑеÑÑÑ Ñакже на агÑегаÑнÑе и оконнÑе ÑÑнкÑии, но не на пÑоÑедÑÑÑ, Ñоже подобно ваÑианÑÑ GRANT Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑного обÑекÑа. ЧÑÐ¾Ð±Ñ Ð¾Ñ
ваÑиÑÑ Ð¸ пÑоÑедÑÑÑ, воÑполÑзÑйÑеÑÑ ÑоÑмой ALL ROUTINES.
GRANT Ð´Ð»Ñ Ñолей
ÐÑа ÑазновидноÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ GRANT вклÑÑÐ°ÐµÑ ÑÐ¾Ð»Ñ Ð² ÑÐ»ÐµÐ½Ñ Ð¾Ð´Ð½Ð¾Ð¹ или неÑколÑкиÑ
дÑÑгиÑ
Ñолей. ЧленÑÑво в ÑолÑÑ
игÑÐ°ÐµÑ Ð²Ð°Ð¶Ð½ÑÑ ÑолÑ, Ñак как пÑава, даннÑе Ñоли, ÑаÑпÑоÑÑÑанÑÑÑÑÑ Ð¸ на вÑеÑ
ÐµÑ Ñленов.
ÐолÑÑивÑий ÑленÑÑво в Ñоли Ñ Ñказанием WITH ADMIN OPTION ÑможеÑ, в ÑÐ²Ð¾Ñ Ð¾ÑеÑедÑ, вклÑÑаÑÑ Ð² ÑÐ»ÐµÐ½Ñ ÑÑой Ñоли, а Ñакже иÑклÑÑаÑÑ Ð¸Ð· Ð½ÐµÑ Ð´ÑÑгие Ñоли. Ðез ÑÑого ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¾Ð±ÑÑнÑе полÑзоваÑели не могÑÑ ÑÑо делаÑÑ. СÑиÑаеÑÑÑ, ÑÑо ÑÐ¾Ð»Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð¿Ñава WITH ADMIN OPTION Ð´Ð»Ñ Ñамой ÑебÑ. СÑпеÑполÑзоваÑели баз даннÑÑ
могÑÑ Ð²ÐºÐ»ÑÑаÑÑ Ð¸Ð»Ð¸ иÑклÑÑаÑÑ Ð»ÑбÑе Ñоли из лÑбÑÑ
Ñолей.
С Ñказанием GRANTED BY назнаÑение пÑава ÑоÑ
ÑанÑеÑÑÑ ÐºÐ°Ðº данное Ñказанной ÑолÑÑ. ÐÑо Ñказание в полной меÑе могÑÑ Ð¸ÑполÑзоваÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, а обÑÑÐ½Ð¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¾Ð½Ð¾ доÑÑÑпно, ÑолÑко еÑли в ÑÑом Ñказании задаÑÑÑÑ Ð¸Ð¼Ñ ÐµÐ³Ð¾ Ñоли.
РоÑлиÑие Ð¾Ñ Ð¿Ñав, ÑленÑÑво в ÑолÑÑ
нелÑÐ·Ñ Ð½Ð°Ð·Ð½Ð°ÑиÑÑ Ð³ÑÑппе PUBLIC. ÐамеÑÑÑе Ñакже, ÑÑо ÑÑа ÑоÑма ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸Ð·Ð±ÑÑоÑное Ñлово GROUP в Ñказании_Ñоли.
ÐÑимеÑаниÑ
ÐÐ»Ñ Ð»Ð¸ÑÐµÐ½Ð¸Ñ ÑÑбÑекÑов пÑав доÑÑÑпа пÑименÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° REVOKE.
ÐаÑÐ¸Ð½Ð°Ñ Ñ PostgreSQL веÑÑии 8.1, конÑепÑии полÑзоваÑелей и гÑÑпп обÑÐµÐ´Ð¸Ð½ÐµÐ½Ñ Ð² единÑÑ ÑÑÑноÑÑÑ, названнÑÑ ÑолÑÑ. Таким обÑазом, ÑепеÑÑ Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑи добавлÑÑÑ ÐºÐ»ÑÑевое Ñлово GROUP, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ, ÑÑо ÑÑбÑÐµÐºÑ ÑвлÑеÑÑÑ Ð³ÑÑппой, а не полÑзоваÑелем. Слово GROUP вÑÑ ÐµÑÑ Ð¿ÑинимаеÑÑÑ ÑÑой командой, но оно лиÑено ÑмÑÑловой нагÑÑзки.
ÐолÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑ SELECT, INSERT и подобнÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñо ÑÑолбÑом ÑаблиÑÑ, еÑли он Ð¸Ð¼ÐµÐµÑ Ñакое пÑаво Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑÑолбÑа или Ð´Ð»Ñ Ð²Ñей ÑаблиÑÑ. ÐÑли назнаÑиÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑÑебÑемое пÑаво на ÑÑовне ÑаблиÑÑ, а заÑем оÑозваÑÑ ÐµÐ³Ð¾ Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ из ÑÑолбÑов, ÑÑо не даÑÑ ÑÑÑекÑа, коÑоÑого можно бÑло Ð±Ñ Ð¾Ð¶Ð¸Ð´Ð°ÑÑ: опеÑаÑÐ¸Ñ Ñ Ð¿Ñавами на ÑÑовне ÑÑолбÑов не заÑÑÐ¾Ð½ÐµÑ Ð¿Ñаво на ÑÑовне ÑаблиÑÑ.
ÐÑли назнаÑиÑÑ Ð¿Ñаво доÑÑÑпа к обÑекÑÑ (Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ GRANT) попÑÑаеÑÑÑ Ð½Ðµ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¾Ð±ÑекÑа, команда завеÑÑиÑÑÑ Ð¾Ñибкой, еÑли полÑзоваÑÐµÐ»Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
пÑав Ð´Ð»Ñ ÑÑого обÑекÑа. ÐÑли же полÑзоваÑÐµÐ»Ñ Ð¸Ð¼ÐµÐµÑ ÐºÐ°ÐºÐ¸Ðµ-Ñо пÑава, команда бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ, но полÑзоваÑÐµÐ»Ñ ÑÐ¼Ð¾Ð¶ÐµÑ Ð´Ð°Ð²Ð°ÑÑ Ð´ÑÑгим ÑолÑко Ñе пÑава, коÑоÑÑе Ð´Ð°Ð½Ñ ÐµÐ¼Ñ Ñ Ð¿Ñавом пеÑедаÑи. ФоÑÐ¼Ñ GRANT ALL PRIVILEGES бÑдÑÑ Ð²ÑдаваÑÑ Ð¿ÑедÑпÑеждение, еÑли Ñ Ð½ÐµÐ³Ð¾ вовÑе Ð½ÐµÑ ÑакиÑ
пÑав, Ñогда как дÑÑгие ÑоÑÐ¼Ñ Ð±ÑдÑÑ Ð²ÑдаваÑÑ Ð¿ÑедÑпÑеждениÑ, еÑли полÑзоваÑÐµÐ»Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð¿Ñав ÑаÑпоÑÑжаÑÑÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ пÑавами, ÑказаннÑми в команде. (РпÑинÑипе, ÑÑи ÑÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½Ð¸Ð¼Ñ Ð¸ к владелÑÑÑ Ð¾Ð±ÑекÑа, но ÐµÐ¼Ñ ÑазÑеÑено ÑаÑпоÑÑжаÑÑÑÑ Ð²Ñеми пÑавами, поÑÑÐ¾Ð¼Ñ Ñакие ÑиÑÑаÑии невозможнÑ.)
СледÑÐµÑ Ð¾ÑмеÑиÑÑ, ÑÑо ÑÑпеÑполÑзоваÑели баз даннÑÑ
могÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº лÑбÑм обÑекÑам, вне завиÑимоÑÑи Ð¾Ñ Ð½Ð°Ð»Ð¸ÑÐ¸Ñ ÐºÐ°ÐºÐ¸Ñ
-либо пÑав. ÐÑо ÑÑавнимо Ñ Ð¿ÑивилегиÑми полÑзоваÑÐµÐ»Ñ root в ÑиÑÑеме Unix. Ð Ñак же, как root, ÑÐ¾Ð»Ñ ÑÑпеÑполÑзоваÑÐµÐ»Ñ ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ ÑолÑко когда ÑÑо абÑолÑÑно необÑ
одимо.
ÐÑли ÑÑпеÑполÑзоваÑÐµÐ»Ñ ÑеÑÐ¸Ñ Ð²ÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ GRANT или REVOKE, она бÑÐ´ÐµÑ Ð²Ñполнена, как еÑли Ð±Ñ ÐµÑ Ð²ÑполнÑл Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ обÑекÑа. Ð ÑаÑÑноÑÑи, пÑава, назнаÑеннÑе Ñакой командой, бÑдÑÑ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ ÐºÐ°Ðº пÑава, назнаÑеннÑе владелÑÑем обÑекÑа. (ÐÑли Ñак же ÑÑÑановиÑÑ ÑленÑÑво в Ñоли, оно бÑÐ´ÐµÑ Ð¿ÑедÑÑавлено как назнаÑенное Ñамой ÑолÑÑ.)
GRANT и REVOKE Ñакже могÑÑ Ð±ÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ñ ÑолÑÑ, коÑоÑÐ°Ñ Ð½Ðµ ÑвлÑеÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем заданного обÑекÑа, но ÑвлÑеÑÑÑ Ñленом Ñоли-владелÑÑа, либо Ñленом Ñоли, имеÑÑей пÑава WITH GRANT OPTION Ð´Ð»Ñ ÑÑого обÑекÑа. Ð ÑÑом ÑлÑÑае пÑава бÑдÑÑ Ð·Ð°Ð¿Ð¸ÑÐ°Ð½Ñ ÐºÐ°Ðº назнаÑеннÑе ÑолÑÑ, коÑоÑÐ°Ñ Ð´ÐµÐ¹ÑÑвиÑелÑно Ð²Ð»Ð°Ð´ÐµÐµÑ Ð¾Ð±ÑекÑом, либо Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво WITH GRANT OPTION. ÐапÑимеÑ, еÑли ÑаблиÑа t1 пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ Ñоли g1, Ñленом коÑоÑой ÑвлÑеÑÑÑ u1, Ñо u1 Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°ÑÑ Ð¿Ñава на иÑполÑзование t1 Ñоли u2, но ÑÑи пÑава бÑдÑÑ Ð¿ÑедÑÑавленÑ, как назнаÑеннÑе непоÑÑедÑÑвенно ÑолÑÑ g1. ÐÑозваÑÑ ÑÑи пÑава позже ÑÐ¼Ð¾Ð¶ÐµÑ Ð»Ñбой Ñлен Ñоли g1.
ÐÑли ÑолÑ, вÑполнÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ GRANT, полÑÑÐ°ÐµÑ ÑÑебÑемое пÑаво по неÑколÑким пÑÑÑм ÑленÑÑва, ÐºÐ°ÐºÐ°Ñ Ð¸Ð¼ÐµÐ½Ð½Ð¾ ÑÐ¾Ð»Ñ Ð±ÑÐ´ÐµÑ Ð²ÑбÑана в каÑеÑÑве назнаÑаÑÑей пÑаво, не опÑеделено. ÐÑли ÑÑо важно, в ÑакиÑ
ÑлÑÑаÑÑ
ÑекомендÑеÑÑÑ Ð²Ð¾ÑполÑзоваÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ SET ROLE и пеÑеклÑÑиÑÑÑÑ Ð½Ð° ÑолÑ, коÑоÑÑÑ Ñ
оÑеÑÑÑ Ð²Ð¸Ð´ÐµÑÑ Ð² каÑеÑÑве вÑполнÑÑÑей GRANT.
ÐÑи назнаÑении пÑав Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÑаблиÑе они авÑомаÑиÑеÑки не ÑаÑпÑоÑÑÑанÑÑÑÑÑ Ð½Ð° поÑледоваÑелÑноÑÑи, иÑполÑзÑемÑе ÑÑой ÑаблиÑей, в Ñом ÑиÑле, на поÑледоваÑелÑноÑÑи, ÑвÑзаннÑе Ñо ÑÑолбÑами SERIAL. ÐÑава доÑÑÑпа к поÑледоваÑелÑноÑÑÑм нÑжно назнаÑаÑÑ Ð¾ÑделÑно.
ÐодÑобнее о конкÑеÑнÑÑ ÑÐ¸Ð¿Ð°Ñ Ð¿Ñав, а Ñакже о Ñом, как пÑоÑмоÑÑеÑÑ Ð¿Ñава, назнаÑеннÑе Ð´Ð»Ñ Ð¾Ð±ÑекÑов, ÑаÑÑказÑваеÑÑÑ Ð² Разделе 5.7.
ÐÑимеÑÑ
СледÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ÑазÑеÑÐ°ÐµÑ Ð²Ñем добавлÑÑÑ Ð·Ð°Ð¿Ð¸Ñи в ÑаблиÑÑ films:
GRANT INSERT ON films TO PUBLIC;
ÐÑа команда даÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ manuel вÑе пÑава Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ kinds:
GRANT ALL PRIVILEGES ON kinds TO manuel;
УÑÑиÑе, ÑÑо еÑли ÐµÑ Ð²ÑÐ¿Ð¾Ð»Ð½Ð¸Ñ ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ kinds, ÑÑа команда дейÑÑвиÑелÑно даÑÑ ÑÑбÑекÑÑ Ð²Ñе пÑава, но еÑли ÐµÑ Ð²ÑÐ¿Ð¾Ð»Ð½Ð¸Ñ Ð¾Ð±ÑÑнÑй полÑзоваÑелÑ, ÑÑбÑÐµÐºÑ Ð¿Ð¾Ð»ÑÑÐ¸Ñ ÑолÑко Ñе пÑава, коÑоÑÑе Ð´Ð°Ð½Ñ ÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавом пеÑедаÑи.
ÐклÑÑение в ÑÐ¾Ð»Ñ admins полÑзоваÑÐµÐ»Ñ joe:
GRANT admins TO joe;
СовмеÑÑимоÑÑÑ
СоглаÑно ÑÑандаÑÑÑ SQL, Ñлово PRIVILEGES в Ñказании ALL PRIVILEGES ÑвлÑеÑÑÑ Ð¾Ð±ÑзаÑелÑнÑм. СÑандаÑÑ SQL не позволÑÐµÑ Ð½Ð°Ð·Ð½Ð°ÑаÑÑ Ð¿Ñава ÑÑÐ°Ð·Ñ Ð´Ð»Ñ Ð½ÐµÑколÑкиÑ
обÑекÑов одной командой.
Postgres Pro позволÑÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑÑ Ð¾Ð±ÑекÑа лиÑиÑÑ ÑÐµÐ±Ñ ÑвоиÑ
обÑÑнÑÑ
пÑав: напÑимеÑ, Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑазÑеÑиÑÑ Ñебе ÑолÑко ÑÑение ÑаблиÑÑ, оÑозвав ÑобÑÑвеннÑе пÑава INSERT, UPDATE, DELETE и TRUNCATE. Ð ÑÑандаÑÑе SQL ÑÑо невозможно. ÐÑо обÑÑÑнÑеÑÑÑ Ñем, ÑÑо Postgres Pro воÑпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿Ñава владелÑÑа как назнаÑеннÑе им же Ñебе; поÑÑÐ¾Ð¼Ñ Ð¸Ñ
можно и оÑозваÑÑ. Ð ÑÑандаÑÑе SQL пÑава владелÑÑа даÑÑÑÑ ÐµÐ¼Ñ Ð¿Ñедполагаемой ÑÑÑноÑÑÑÑ Â«_SYSTEM». Так как Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¾Ð±ÑекÑа оÑлиÑаеÑÑÑ Ð¾Ñ Â«_SYSTEM», лиÑиÑÑ ÑÐµÐ±Ñ ÑÑиÑ
пÑав он не можеÑ.
СоглаÑно ÑÑандаÑÑÑ SQL, пÑаво Ñ Ð¿Ñавом пеÑедаÑи можно даÑÑ ÑÑбÑекÑÑ PUBLIC; однако Postgres Pro Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°Ð²Ð°ÑÑ Ð¿Ñаво Ñ Ð¿Ñавом пеÑедаÑи ÑолÑко ÑолÑм.
СÑандаÑÑ SQL допÑÑÐºÐ°ÐµÑ Ð² пÑедложении GRANTED BY ÑолÑко Ñказание CURRENT_USER или CURRENT_ROLE. ÐÑÑгие ваÑианÑÑ Ð¾ÑноÑÑÑÑÑ Ðº ÑаÑÑиÑениÑм PostgreSQL.
Ð ÑÑандаÑÑе SQL пÑаво USAGE ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð¸ на дÑÑгие ÑÐ¸Ð¿Ñ Ð¾Ð±ÑекÑов: набоÑÑ Ñимволов, пÑавила ÑоÑÑиÑовки и пÑеобÑазованиÑ.
Ð ÑÑандаÑÑе SQL пÑаво USAGE Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей ÑпÑавлÑÐµÑ Ð¸ÑполÑзованием вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ NEXT VALUE FOR, коÑоÑое ÑавнознаÑно ÑÑнкÑии nextval в Postgres Pro. ÐÑава SELECT и UPDATE Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей ÑвлÑÑÑÑÑ ÑаÑÑиÑениÑми Postgres Pro. То, ÑÑо пÑаво USAGE Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей ÑпÑавлÑÐµÑ Ð¸ÑполÑзованием ÑÑнкÑии currval, Ñак же оÑноÑиÑÑÑ Ðº ÑаÑÑиÑениÑм Postgres Pro (как и Ñама ÑÑнкÑиÑ).
ÐÑава Ð´Ð»Ñ Ð±Ð°Ð· даннÑÑ , ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв, ÑÑ ÐµÐ¼, ÑзÑков и паÑамеÑÑов конÑигÑÑаÑии оÑноÑÑÑÑÑ Ðº ÑаÑÑиÑениÑм Postgres Pro.