GRANT
GRANT â опÑеделиÑÑ Ð¿Ñава доÑÑÑпа
СинÑакÑиÑ
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[, ...] | ALL [ PRIVILEGES ] }
ON { [ TABLE ] имÑ_ÑаблиÑÑ [, ...]
| ALL TABLES IN SCHEMA имÑ_ÑÑ
ÐµÐ¼Ñ [, ...] }
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( имÑ_ÑÑолбÑа [, ...] )
[, ...] | ALL [ PRIVILEGES ] ( имÑ_ÑÑолбÑа [, ...] ) }
ON [ TABLE ] имÑ_ÑаблиÑÑ [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { { USAGE | SELECT | UPDATE }
[, ...] | ALL [ PRIVILEGES ] }
ON { SEQUENCE имÑ_поÑледоваÑелÑноÑÑи [, ...]
| ALL SEQUENCES IN SCHEMA имÑ_ÑÑ
ÐµÐ¼Ñ [, ...] }
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
ON DATABASE имÑ_бд [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON DOMAIN имÑ_домена [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON FOREIGN DATA WRAPPER имÑ_обÑÑÑки_ÑÑоÑонниÑ
_даннÑÑ
[, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON FOREIGN SERVER имÑ_ÑеÑвеÑа [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON { FUNCTION имÑ_ÑÑнкÑии [ ( [ [ Ñежим_аÑгÑменÑа ] [ имÑ_аÑгÑменÑа ] Ñип_аÑгÑменÑа [, ...] ] ) ] [, ...]
| ALL FUNCTIONS IN SCHEMA имÑ_ÑÑ
ÐµÐ¼Ñ [, ...] }
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON LANGUAGE имÑ_ÑзÑка [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
ON LARGE OBJECT oid_ÐÐ [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
ON SCHEMA имÑ_ÑÑ
ÐµÐ¼Ñ [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { CREATE | ALL [ PRIVILEGES ] }
ON TABLESPACE Ñабл_пÑоÑÑÑанÑÑво [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON TYPE имÑ_Ñипа [, ...]
TO Ñказание_Ñоли [, ...] [ WITH GRANT OPTION ]
GRANT имÑ_Ñоли [, ...] TO Ñказание_Ñоли [, ...]
[ WITH ADMIN OPTION ]
[ GRANTED BY Ñказание_Ñоли ]
ÐдеÑÑ Ñказание_Ñоли:
[ GROUP ] имÑ_Ñоли
| PUBLIC
| CURRENT_USER
| SESSION_USERÐпиÑание
Ðоманда GRANT Ð¸Ð¼ÐµÐµÑ Ð´Ð²Ðµ оÑновнÑе ÑазновидноÑÑи: пеÑÐ²Ð°Ñ Ð½Ð°Ð·Ð½Ð°ÑÐ°ÐµÑ Ð¿Ñава Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к обÑекÑам баз даннÑÑ
(ÑаблиÑам, ÑÑолбÑам, пÑедÑÑавлениÑм, ÑÑоÑонним ÑаблиÑам, поÑледоваÑелÑноÑÑÑм, базам даннÑÑ
, обÑÑÑкам ÑÑоÑонниÑ
даннÑÑ
, ÑÑоÑонним ÑеÑвеÑам, ÑÑнкÑиÑм, пÑоÑедÑÑнÑм ÑзÑкам, ÑÑ
емам или ÑаблиÑнÑм пÑоÑÑÑанÑÑвам), а вÑоÑÐ°Ñ Ð½Ð°Ð·Ð½Ð°ÑÐ°ÐµÑ Ð¾Ð´Ð½Ð¸ Ñоли Ñленами дÑÑгиÑ
. ÐÑи ÑазновидноÑÑи во многом поÑ
ожи, но имеÑÑ Ð´Ð¾ÑÑаÑоÑно оÑлиÑий, ÑÑÐ¾Ð±Ñ ÑаÑÑмаÑÑиваÑÑ Ð¸Ñ
оÑделÑно.
GRANT Ð´Ð»Ñ Ð¾Ð±ÑекÑов баз даннÑÑ
ÐÑа ÑазновидноÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ GRANT даÑÑ Ð¾Ð´Ð½Ð¾Ð¹ или неÑколÑким ÑолÑм опÑеделÑннÑе пÑава Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к обÑекÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐÑи пÑава добавлÑÑÑÑÑ Ðº ÑпиÑÐºÑ Ð¸Ð¼ÐµÑÑиÑ
ÑÑ, еÑли ÑÐ¾Ð»Ñ Ñже наделена какими-Ñо пÑавами.
Также можно даÑÑ Ñоли некоÑоÑое пÑаво Ð´Ð»Ñ Ð²ÑеÑ
обÑекÑов одного Ñипа в одной или неÑколÑкиÑ
ÑÑ
емаÑ
. ÐÑа ÑÑнкÑионалÑноÑÑÑ Ð² наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑаблиÑ, поÑледоваÑелÑноÑÑей и ÑÑнкÑий (но замеÑÑÑе, ÑÑо Ñказание ALL TABLES ÑаÑпÑоÑÑÑанÑеÑÑÑ Ñакже на пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑÑоÑонние ÑаблиÑÑ).
ÐлÑÑевое Ñлово PUBLIC ознаÑаеÑ, ÑÑо пÑава даÑÑÑÑ Ð²Ñем ÑолÑм, вклÑÑÐ°Ñ Ñе, ÑÑо могÑÑ Ð±ÑÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð¿Ð¾Ð·Ð¶Ðµ. PUBLIC можно воÑпÑинимаÑÑ ÐºÐ°Ðº неÑвно опÑеделÑннÑÑ Ð³ÑÑппÑ, в коÑоÑÑÑ Ð²Ñ
одÑÑ Ð²Ñе Ñоли. ÐÑÐ±Ð°Ñ ÐºÐ¾Ð½ÐºÑеÑÐ½Ð°Ñ ÑÐ¾Ð»Ñ Ð¿Ð¾Ð»ÑÑÐ¸Ñ Ð² ÑÑмме вÑе пÑава, даннÑе непоÑÑедÑÑвенно ей и ÑолÑм, Ñленом коÑоÑÑÑ
она ÑвлÑеÑÑÑ, а Ñакже пÑава, даннÑе Ñоли PUBLIC.
ÐÑли Ñказано WITH GRANT OPTION, полÑÑаÑÐµÐ»Ñ Ð¿Ñава, в ÑÐ²Ð¾Ñ Ð¾ÑеÑедÑ, Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°Ð²Ð°ÑÑ ÐµÐ³Ð¾ дÑÑгим. Ðез ÑÑого ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑаÑпоÑÑжаÑÑÑÑ Ñвоим пÑавом он не ÑможеÑ. ÐÑÑппе PUBLIC пÑаво пеÑедаÑи пÑава даÑÑ Ð½ÐµÐ»ÑзÑ.
ÐÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи Ñвно даваÑÑ Ð¿Ñава Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к обÑекÑÑ ÐµÐ³Ð¾ владелÑÑÑ (обÑÑно ÑÑо полÑзоваÑелÑ, ÑоздавÑий обÑекÑ), Ñак как по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ Ð¸Ð¼ÐµÐµÑ Ð²Ñе пÑава. (Ðднако Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ÑиÑÑ ÑÐµÐ±Ñ Ð¿Ñав в ÑелÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи.)
ÐÑаво ÑдалÑÑÑ Ð¾Ð±ÑÐµÐºÑ Ð¸Ð»Ð¸ изменÑÑÑ ÐµÐ³Ð¾ опÑеделение пÑоизволÑнÑм обÑазом не ÑÑиÑаеÑÑÑ Ð½Ð°Ð·Ð½Ð°ÑаемÑм; оно неоÑÑемлемо ÑвÑзано Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем, Ñак ÑÑо оÑозваÑÑ ÑÑо пÑаво или даÑÑ ÐµÐ³Ð¾ комÑ-Ñо дÑÑÐ³Ð¾Ð¼Ñ Ð½ÐµÐ»ÑзÑ. (Ðднако Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ð¹ ÑÑÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, ÑпÑавлÑÑ ÑленÑÑвом в Ñоли, владеÑÑей обÑекÑом; Ñм. ниже.) ÐÐ»Ð°Ð´ÐµÐ»ÐµÑ Ñакже неÑвно полÑÑÐ°ÐµÑ Ð¿Ñаво ÑаÑпоÑÑÐ¶ÐµÐ½Ð¸Ñ Ð²Ñеми пÑавами Ð´Ð»Ñ Ñвоего обÑекÑа.
PostgreSQL по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð°Ð·Ð½Ð°ÑÐ°ÐµÑ Ð³ÑÑппе PUBLIC опÑеделÑннÑе пÑава Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
Ñипов обÑекÑов. ÐÐ»Ñ ÑаблиÑ, ÑÑолбÑов, поÑледоваÑелÑноÑÑей, обÑÑÑок ÑÑоÑонниÑ
даннÑÑ
, ÑÑоÑонниÑ
ÑеÑвеÑов, болÑÑиÑ
обÑекÑов, ÑÑ
ем или ÑаблиÑнÑÑ
пÑоÑÑÑанÑÑв PUBLIC по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
пÑав не имееÑ. ÐÐ»Ñ Ð´ÑÑгиÑ
Ñипов обÑекÑов PUBLIC Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑие пÑава по ÑмолÑаниÑ: CONNECT и TEMPORARY (Ñоздание вÑеменнÑÑ
ÑаблиÑ) Ð´Ð»Ñ Ð±Ð°Ð· даннÑÑ
; EXECUTE â Ð´Ð»Ñ ÑÑнкÑий, USAGE â Ð´Ð»Ñ ÑзÑков и Ñипов даннÑÑ
(вклÑÑÐ°Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ). ÐÐ»Ð°Ð´ÐµÐ»ÐµÑ Ð¾Ð±ÑекÑа, конеÑно же, Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑозваÑÑ (Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ REVOKE) как Ñвно назнаÑеннÑе пÑава, Ñак и пÑава по ÑмолÑаниÑ. (ÐÐ»Ñ Ð¼Ð°ÐºÑималÑной безопаÑноÑÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ REVOKE нÑжно вÑполнÑÑÑ Ð² ÑÑанзакÑии, ÑоздаÑÑей обÑекÑ; Ñогда не обÑазÑеÑÑÑ Ð¾ÐºÐ½Ð¾, в коÑоÑом дÑÑгой полÑзоваÑÐµÐ»Ñ Ñмог Ð±Ñ Ð¾Ð±ÑаÑиÑÑÑÑ Ðº обÑекÑÑ.) ÐÑоме Ñого, ÑÑи изнаÑалÑно назнаÑаемÑе пÑава по ÑмолÑÐ°Ð½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ измениÑÑ, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER DEFAULT PRIVILEGES.
ÐÑе возможнÑе пÑава пеÑеÑиÑÐ»ÐµÐ½Ñ Ð½Ð¸Ð¶Ðµ:
SELECTÐозволÑÐµÑ Ð²ÑполнÑÑÑ SELECT Ð´Ð»Ñ Ð»Ñбого ÑÑолбÑа или пеÑеÑиÑленнÑÑ ÑÑолбÑов в заданной ÑаблиÑе, пÑедÑÑавлении или поÑледоваÑелÑноÑÑи. Также позволÑÐµÑ Ð²ÑполнÑÑÑ COPY TO. Ðомимо Ñого, ÑÑо пÑаво ÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº ÑÑÑеÑÑвÑÑÑим знаÑениÑм ÑÑолбÑов в UPDATE или DELETE. ÐÐ»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей ÑÑо пÑаво позволÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑÑÑÑ ÑÑнкÑией
currval. ÐÐ»Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ Ð¾Ð±ÑекÑов ÑÑо пÑаво позволÑÐµÑ ÑиÑаÑÑ ÑодеÑжимое обÑекÑа.INSERTÐозволÑÐµÑ Ð²ÑÑавлÑÑÑ ÑÑÑоки в заданнÑÑ ÑаблиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ INSERT. ÐÑли пÑаво огÑаниÑиваеÑÑÑ Ð½ÐµÑколÑкими ÑÑолбÑами, ÑолÑко Ð¸Ñ Ð·Ð½Ð°Ñение можно бÑÐ´ÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð² команде
INSERT(дÑÑгие ÑÑолбÑÑ Ð¿Ð¾Ð»ÑÑÐ°Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ). Также позволÑÐµÑ Ð²ÑполнÑÑÑ COPY FROM.UPDATEÐозволÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ (Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ UPDATE) даннÑе во вÑÐµÑ , либо ÑолÑко пеÑеÑиÑленнÑÑ , ÑÑолбÑÐ°Ñ Ð² заданной ÑаблиÑе. (Ðа пÑакÑике Ð´Ð»Ñ Ð»Ñбой неÑÑивиалÑной командÑ
UPDATEпоÑÑебÑеÑÑÑ Ð¸ пÑавоSELECT, Ñак как она должна обÑаÑиÑÑÑÑ Ðº ÑÑолбÑам ÑаблиÑÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ, какие ÑÑÑоки Ð¿Ð¾Ð´Ð»ÐµÐ¶Ð°Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, и/или вÑÑиÑлиÑÑ Ð½Ð¾Ð²Ñе знаÑÐµÐ½Ð¸Ñ ÑÑолбÑов.) ÐлÑSELECT ... FOR UPDATEиSELECT ... FOR SHAREÑакже Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÑо пÑаво как минимÑм Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑÑолбÑа, помимо пÑаваSELECT. ÐÐ»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей ÑÑо пÑаво позволÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑÑÑÑ ÑÑнкÑиÑмиnextvalиsetval. ÐÐ»Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ Ð¾Ð±ÑекÑов ÑÑо пÑаво позволÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑ Ð´Ð°Ð½Ð½Ñе в обÑÐµÐºÑ Ð¸Ð»Ð¸ обÑезаÑÑ ÐµÐ³Ð¾.DELETEÐозволÑÐµÑ ÑдалÑÑÑ ÑÑÑоки из заданной ÑаблиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ DELETE. (Ðа пÑакÑике Ð´Ð»Ñ Ð»Ñбой неÑÑивиалÑной командÑ
DELETEпоÑÑебÑеÑÑÑ Ñакже пÑавоSELECT, Ñак как она должна обÑаÑиÑÑÑÑ Ðº ÑÑолбÑам ÑаблиÑÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ, какие ÑÑÑоки Ð¿Ð¾Ð´Ð»ÐµÐ¶Ð°Ñ ÑдалениÑ.)TRUNCATEÐозволÑÐµÑ Ð¾Ð¿ÑÑÑоÑиÑÑ Ð·Ð°Ð´Ð°Ð½Ð½ÑÑ ÑаблиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ TRUNCATE.
REFERENCESÐозволÑÐµÑ ÑоздаваÑÑ Ð¾Ð³ÑаниÑение внеÑнего клÑÑа, ÑÑÑлаÑÑееÑÑ Ð½Ð° опÑеделÑннÑÑ ÑаблиÑÑ Ð»Ð¸Ð±Ð¾ на опÑеделÑннÑе ÑÑолбÑÑ ÑаблиÑÑ. (См. опиÑание CREATE TABLE.)
TRIGGERÐозволÑÐµÑ ÑоздаваÑÑ ÑÑиггеÑÑ Ð² заданной ÑаблиÑе. (См. опиÑание опеÑаÑоÑа CREATE TRIGGER.)
CREATEÐÐ»Ñ Ð±Ð°Ð· даннÑÑ ÑÑо пÑаво позволÑÐµÑ ÑоздаваÑÑ ÑÑ ÐµÐ¼Ñ Ð¸ пÑбликаÑии в заданной базе.
ÐÐ»Ñ ÑÑ ÐµÐ¼ ÑÑо пÑаво позволÑÐµÑ ÑоздаваÑÑ Ð½Ð¾Ð²Ñе обÑекÑÑ Ð² заданной ÑÑ ÐµÐ¼Ðµ. ЧÑÐ¾Ð±Ñ Ð¿ÐµÑеименоваÑÑ ÑÑÑеÑÑвÑÑÑий обÑекÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ бÑÑÑ ÐµÐ³Ð¾ владелÑÑем и имеÑÑ ÑÑо пÑаво Ð´Ð»Ñ ÑÑ ÐµÐ¼Ñ, ÑодеÑжаÑей его.
ÐÐ»Ñ ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв ÑÑо пÑаво позволÑÐµÑ ÑоздаваÑÑ ÑаблиÑÑ, индекÑÑ Ð¸ вÑеменнÑе ÑÐ°Ð¹Ð»Ñ Ð² заданном ÑаблиÑном пÑоÑÑÑанÑÑве, а Ñакже ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ ÑÑо пÑоÑÑÑанÑÑво бÑÐ´ÐµÑ Ð¾ÑновнÑм. (УÑÑиÑе, ÑÑо когда ÑÑо пÑаво оÑзÑваеÑÑÑ, ÑÑÑеÑÑвÑÑÑие обÑекÑÑ Ð¾ÑÑаÑÑÑÑ Ð² пÑежнем ÑаÑположении.)
CONNECTÐозволÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ðº Ñказанной базе даннÑÑ . ÐÑо пÑаво пÑовеÑÑеÑÑÑ Ð¿Ñи ÑÑÑановлении ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (в дополнение к ÑÑловиÑм, опÑеделÑннÑм в конÑигÑÑаÑии
pg_hba.conf).TEMPORARYTEMPÐозволÑÐµÑ ÑоздаваÑÑ Ð²ÑеменнÑе ÑаблиÑÑ Ð² заданной базе даннÑÑ .
EXECUTEÐозволÑÐµÑ Ð²ÑполнÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½ÑÑ ÑÑнкÑÐ¸Ñ Ð¸ пÑименÑÑÑ Ð»ÑбÑе опÑеделÑннÑе повеÑÑ Ð½ÐµÑ Ð¾Ð¿ÐµÑаÑоÑÑ. ÐÑо единÑÑвеннÑй Ñип пÑав, пÑименимÑй к ÑÑнкÑиÑм. (ÐÑÐ¾Ñ ÑинÑакÑÐ¸Ñ ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð¸ на агÑегаÑнÑе ÑÑнкÑии.)
USAGEÐÐ»Ñ Ð¿ÑоÑедÑÑнÑÑ ÑзÑков ÑÑо пÑаво позволÑÐµÑ ÑоздаваÑÑ ÑÑнкÑии на заданном ÑзÑке. ÐÑо единÑÑвеннÑй Ñип пÑав, пÑименимÑй к пÑоÑедÑÑнÑм ÑзÑкам.
ÐÐ»Ñ ÑÑ ÐµÐ¼ ÑÑо пÑаво даÑÑ Ð´Ð¾ÑÑÑп к обÑекÑам, ÑодеÑжаÑимÑÑ Ð² заданной ÑÑ ÐµÐ¼Ðµ (пÑедполагаеÑÑÑ, ÑÑо пÑи ÑÑом имеÑÑÑÑ Ð¿Ñава, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к Ñамим обÑекÑам). Ðо ÑÑÑи ÑÑо пÑаво позволÑÐµÑ ÑÑбÑекÑÑ Â«Ð¿ÑоÑмаÑÑиваÑÑ» обÑекÑÑ Ð²Ð½ÑÑÑи ÑÑ ÐµÐ¼Ñ. Ðез ÑÑого ÑазÑеÑÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° обÑекÑов вÑÑ Ð¶Ðµ можно бÑÐ´ÐµÑ ÑзнаÑÑ, напÑимеÑ, обÑаÑивÑиÑÑ Ðº ÑиÑÑемнÑм ÑаблиÑам. ÐÑоме Ñого, еÑли оÑозваÑÑ ÑÑо пÑаво, в ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑеанÑÐ°Ñ Ð¼Ð¾Ð³ÑÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð¾Ð¿ÐµÑаÑоÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð¿ÑоÑмоÑÑ Ð¸Ð¼Ñн обÑекÑов бÑл вÑполнен Ñанее, Ñак ÑÑо ÑÑо пÑаво не позволÑÐµÑ Ð°Ð±ÑолÑÑно надÑжно пеÑекÑÑÑÑ Ð´Ð¾ÑÑÑп к обÑекÑам.
ÐÐ»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей ÑÑо пÑаво позволÑÐµÑ Ð¸ÑполÑзоваÑÑ ÑÑнкÑии
currvalиnextval.ÐÐ»Ñ Ñипов и доменов ÑÑо пÑаво позволÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñй Ñип или домен пÑи Ñоздании ÑаблиÑ, ÑÑнкÑий или дÑÑÐ³Ð¸Ñ Ð¾Ð±ÑекÑов ÑÑ ÐµÐ¼Ñ. (ÐамеÑÑÑе, ÑÑо ÑÑо пÑаво не огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±Ñее «иÑполÑзование» Ñипа, напÑимеÑ, обÑаÑение к знаÑениÑм Ñипа в запÑоÑÐ°Ñ . Ðе Ð¸Ð¼ÐµÑ ÑÑого пÑава, ÑÑбÑÐµÐºÑ Ð»Ð¸ÑаеÑÑÑ ÑолÑко возможноÑÑи ÑоздаваÑÑ Ð¾Ð±ÑекÑÑ, завиÑÑÑие Ð¾Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñипа. ÐÑновное пÑедназнаÑение ÑÑого пÑава в Ñом, ÑÑÐ¾Ð±Ñ Ð¾Ð³ÑаниÑиÑÑ ÐºÑÑг полÑзоваÑелей, ÑпоÑобнÑÑ ÑоздаваÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑи Ð¾Ñ Ñипа, коÑоÑÑе могÑÑ Ð²Ð¿Ð¾ÑледÑÑвии помеÑаÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑÑ Ñипа измениÑÑ ÐµÐ³Ð¾.)
ÐÐ»Ñ Ð¾Ð±ÑÑÑок ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÑо пÑаво позволÑÐµÑ ÑоздаваÑÑ Ð½Ð¾Ð²Ñе ÑеÑвеÑÑ, иÑполÑзÑÑ Ð·Ð°Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð±ÑÑÑкÑ.
ÐÐ»Ñ ÑеÑвеÑов ÑÑо пÑаво позволÑÐµÑ ÑоздаваÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑаблиÑ, ÑвÑзаннÑе Ñ ÑÑим ÑеÑвеÑом. СÑбÑекÑÑ Ð¼Ð¾Ð³ÑÑ Ñакже ÑоздаваÑÑ, изменÑÑÑ Ð¸Ð»Ð¸ ÑдалÑÑÑ ÑопоÑÑавление Ð´Ð»Ñ ÑобÑÑвенного имени полÑзоваÑелÑ, ÑвÑзанное Ñ ÑÑим ÑеÑвеÑом.
ALL PRIVILEGESÐаÑÑ Ñелевой Ñоли вÑе пÑава ÑÑазÑ. ÐлÑÑевое Ñлово
PRIVILEGESÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑм в PostgreSQL, Ñ Ð¾ÑÑ Ð² ÑÑандаÑÑе SQL оно ÑÑебÑеÑÑÑ.
ÐÑава, ÑÑебÑÑÑиеÑÑ Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´, ÑÐºÐ°Ð·Ð°Ð½Ñ Ð½Ð° ÑÑÑаниÑÐ°Ñ ÑпÑавки ÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´.
GRANT Ð´Ð»Ñ Ñолей
ÐÑа ÑазновидноÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ GRANT вклÑÑÐ°ÐµÑ ÑÐ¾Ð»Ñ Ð² ÑÐ»ÐµÐ½Ñ Ð¾Ð´Ð½Ð¾Ð¹ или неÑколÑкиÑ
дÑÑгиÑ
Ñолей. ЧленÑÑво в ÑолÑÑ
игÑÐ°ÐµÑ Ð²Ð°Ð¶Ð½ÑÑ ÑолÑ, Ñак как пÑава, даннÑе Ñоли, ÑаÑпÑоÑÑÑанÑÑÑÑÑ Ð¸ на вÑеÑ
ÐµÑ Ñленов.
ÐолÑÑивÑий ÑленÑÑво в Ñоли Ñ Ñказанием WITH ADMIN OPTION ÑможеÑ, в ÑÐ²Ð¾Ñ Ð¾ÑеÑедÑ, вклÑÑаÑÑ Ð² ÑÐ»ÐµÐ½Ñ ÑÑой Ñоли, а Ñакже иÑклÑÑаÑÑ Ð¸Ð· Ð½ÐµÑ Ð´ÑÑгие Ñоли. Ðез ÑÑого ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¾Ð±ÑÑнÑе полÑзоваÑели не могÑÑ ÑÑо делаÑÑ. СÑиÑаеÑÑÑ, ÑÑо ÑÐ¾Ð»Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð¿Ñава WITH ADMIN OPTION Ð´Ð»Ñ Ñамой ÑебÑ, но ей позволено ÑпÑавлÑÑÑ Ñвоими Ñленами из ÑеанÑа, в коÑоÑом полÑзоваÑÐµÐ»Ñ ÑеанÑа ÑооÑвеÑÑÑвÑÐµÑ Ð´Ð°Ð½Ð½Ð¾Ð¹ Ñоли. СÑпеÑполÑзоваÑели баз даннÑÑ
могÑÑ Ð²ÐºÐ»ÑÑаÑÑ Ð¸Ð»Ð¸ иÑклÑÑаÑÑ Ð»ÑбÑе Ñоли из лÑбÑÑ
Ñолей. Роли Ñ Ð¿Ñавом CREATEROLE могÑÑ ÑпÑавлÑÑÑ ÑленÑÑвом в лÑбÑÑ
ÑолÑÑ
, кÑоме Ñолей ÑÑпеÑполÑзоваÑелей.
С Ñказанием 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. ÐÑава доÑÑÑпа к поÑледоваÑелÑноÑÑÑм нÑжно назнаÑаÑÑ Ð¾ÑделÑно.
ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑÑÑеÑÑвÑÑÑиÑ
пÑаваÑ
, назнаÑеннÑÑ
Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ ÑÑолбÑов, воÑполÑзÑйÑеÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ \dp в psql. ÐапÑимеÑ:
=> \dp mytable
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+---------+-------+-----------------------+--------------------------
public | mytable | table | miriam=arwdDxt/miriam | col1:
: =r/miriam : miriam_rw=rw/miriam
: admin=arw/miriam
(1 row) ÐапиÑи, вÑводимÑе командой \dp, инÑеÑпÑеÑиÑÑÑÑÑÑ Ñак:
имÑ_Ñоли=xxxx -- пÑава, назнаÑеннÑе Ñоли
=xxxx -- пÑава, назнаÑеннÑе PUBLIC
r -- SELECT ("read", ÑÑение)
w -- UPDATE ("write", запиÑÑ)
a -- INSERT ("append", добавление)
d -- DELETE
D -- TRUNCATE
x -- REFERENCES
t -- TRIGGER
X -- EXECUTE
U -- USAGE
C -- CREATE
c -- CONNECT
T -- TEMPORARY
arwdDxt -- ALL PRIVILEGES (вÑе пÑава Ð´Ð»Ñ ÑаблиÑ; Ð´Ð»Ñ Ð´ÑÑгиÑ
обÑекÑов дÑÑгие)
* -- пÑаво пеÑедаÑи заданного пÑава
/yyyy -- ÑолÑ, назнаÑивÑÐ°Ñ ÑÑо пÑаво
РпÑимеÑе вÑÑе показано, ÑÑо ÑÐ²Ð¸Ð´Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ miriam, еÑли ÑоздаÑÑ ÑаблиÑÑ mytable и вÑполниÑ:
GRANT SELECT ON mytable TO PUBLIC; GRANT SELECT, UPDATE, INSERT ON mytable TO admin; GRANT SELECT (col1), UPDATE (col1) ON mytable TO miriam_rw;
ÐÐ»Ñ Ð´ÑÑгиÑ
обÑекÑов еÑÑÑ Ð´ÑÑгие ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ \d, коÑоÑÑе Ñакже позволÑÑÑ Ð¿ÑоÑмоÑÑеÑÑ Ð½Ð°Ð·Ð½Ð°ÑеннÑе пÑава.
ÐÑли ÑÑÐ¾Ð»Ð±ÐµÑ Â«ÐÑава доÑÑÑпа» Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ обÑекÑа пÑÑÑ, ÑÑо знаÑиÑ, ÑÑо Ð´Ð»Ñ Ð¾Ð±ÑекÑа дейÑÑвÑÑÑ ÑÑандаÑÑнÑе пÑава (Ñо еÑÑÑ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿Ñав ÑодеÑÐ¶Ð¸Ñ NULL). ÐÑава по ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ñегда вклÑÑаÑÑ Ð²Ñе пÑава Ð´Ð»Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа и могÑÑ Ñакже вклÑÑаÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе пÑава Ð´Ð»Ñ PUBLIC в завиÑимоÑÑи Ð¾Ñ Ñипа обÑекÑа, как ÑазÑÑÑнÑлоÑÑ Ð²ÑÑе. ÐеÑÐ²Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° GRANT или REVOKE Ð´Ð»Ñ Ð¾Ð±ÑекÑа пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº пÑоÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи пÑав по ÑмолÑÐ°Ð½Ð¸Ñ (напÑимеÑ, {miriam=arwdDxt/miriam}), а заÑем изменÑÐµÑ ÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð² ÑооÑвеÑÑÑвии Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм запÑоÑом. ÐодобнÑм обÑазом, ÑÑÑоки, показаннÑе в ÑÑолбÑе «ÐÑава доÑÑÑпа к ÑÑолбÑам», вÑводÑÑÑÑ ÑолÑко Ð´Ð»Ñ ÑÑолбÑов Ñ Ð½ÐµÑÑандаÑÑнÑми пÑавами доÑÑÑпа. (ÐамеÑÑÑе, ÑÑо в данном конÑекÑÑе под «ÑÑандаÑÑнÑми пÑавами» вÑегда подÑазÑмеваеÑÑÑ Ð²ÑÑÑоеннÑй Ð½Ð°Ð±Ð¾Ñ Ð¿Ñав, пÑедопÑеделÑннÑй Ð´Ð»Ñ Ñипа обÑекÑа. ÐÑли Ñ Ð¾Ð±ÑекÑом ÑвÑзан Ð½Ð°Ð±Ð¾Ñ Ð¿Ñав по ÑмолÑаниÑ, полÑÑеннÑй поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ÑезÑлÑÑаÑе ALTER DEFAULT PRIVILEGES, изменÑннÑе пÑава бÑдÑÑ Ð²Ñегда вÑводиÑÑÑÑ Ñвно, показÑÐ²Ð°Ñ ÑÑÑÐµÐºÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER.)
ÐамеÑÑÑе, ÑÑо пÑаво ÑаÑпоÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¿Ñавами, коÑоÑое Ð¸Ð¼ÐµÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ, не оÑмеÑаеÑÑÑ Ð² вÑводимой Ñводке. Ðнаком * оÑмеÑаÑÑÑÑ ÑолÑко Ñе пÑава Ñ Ð¿Ñавом пеÑедаÑи, коÑоÑÑе бÑли Ñвно назнаÑÐµÐ½Ñ ÐºÐ¾Ð¼Ñ-либо.
ÐÑимеÑÑ
СледÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ÑазÑеÑÐ°ÐµÑ Ð²Ñем добавлÑÑÑ Ð·Ð°Ð¿Ð¸Ñи в ÑаблиÑÑ 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 не позволÑÐµÑ Ð½Ð°Ð·Ð½Ð°ÑаÑÑ Ð¿Ñава ÑÑÐ°Ð·Ñ Ð´Ð»Ñ Ð½ÐµÑколÑкиÑ
обÑекÑов одной командой.
PostgreSQL позволÑÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑÑ Ð¾Ð±ÑекÑа лиÑиÑÑ ÑÐµÐ±Ñ ÑвоиÑ
обÑÑнÑÑ
пÑав: напÑимеÑ, Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑазÑеÑиÑÑ Ñебе ÑолÑко ÑÑение ÑаблиÑÑ, оÑозвав ÑобÑÑвеннÑе пÑава INSERT, UPDATE, DELETE и TRUNCATE. Ð ÑÑандаÑÑе SQL ÑÑо невозможно. ÐÑо обÑÑÑнÑеÑÑÑ Ñем, ÑÑо PostgreSQL воÑпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿Ñава владелÑÑа как назнаÑеннÑе им же Ñебе; поÑÑÐ¾Ð¼Ñ Ð¸Ñ
можно и оÑозваÑÑ. Ð ÑÑандаÑÑе SQL пÑава владелÑÑа даÑÑÑÑ ÐµÐ¼Ñ Ð¿Ñедполагаемой ÑÑÑноÑÑÑÑ Â«_SYSTEM». Так как Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¾Ð±ÑекÑа оÑлиÑаеÑÑÑ Ð¾Ñ Â«_SYSTEM», лиÑиÑÑ ÑÐµÐ±Ñ ÑÑиÑ
пÑав он не можеÑ.
СоглаÑно ÑÑандаÑÑÑ SQL, пÑаво Ñ Ð¿Ñавом пеÑедаÑи можно даÑÑ ÑÑбÑекÑÑ PUBLIC; однако PostgreSQL Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°Ð²Ð°ÑÑ Ð¿Ñаво Ñ Ð¿Ñавом пеÑедаÑи ÑолÑко ÑолÑм.
СÑандаÑÑ SQL ÑазÑеÑÐ°ÐµÑ Ð¸ÑполÑзоваÑÑ Ñказание GRANTED BY во вÑеÑ
ÑоÑмаÑ
GRANT. PostgreSQL поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÐµÐ³Ð¾ ÑолÑко пÑи назнаÑении ÑленÑÑва Ñолей, и пÑи ÑÑом ÑолÑко ÑÑпеÑполÑзоваÑели могÑÑ Ð¸ÑполÑзоваÑÑ ÐµÐ³Ð¾ неÑÑивиалÑнÑм обÑазом.
Ð ÑÑандаÑÑе SQL пÑаво USAGE ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð¸ на дÑÑгие ÑÐ¸Ð¿Ñ Ð¾Ð±ÑекÑов: набоÑÑ Ñимволов, пÑавила ÑоÑÑиÑовки и пÑеобÑазованиÑ.
Ð ÑÑандаÑÑе SQL пÑаво USAGE Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей ÑпÑавлÑÐµÑ Ð¸ÑполÑзованием вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ NEXT VALUE FOR, коÑоÑое ÑавнознаÑно ÑÑнкÑии nextval в PostgreSQL. ÐÑава SELECT и UPDATE Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей ÑвлÑÑÑÑÑ ÑаÑÑиÑениÑми PostgreSQL. То, ÑÑо пÑаво USAGE Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей ÑпÑавлÑÐµÑ Ð¸ÑполÑзованием ÑÑнкÑии currval, Ñак же оÑноÑиÑÑÑ Ðº ÑаÑÑиÑениÑм PostgreSQL (как и Ñама ÑÑнкÑиÑ).
ÐÑава Ð´Ð»Ñ Ð±Ð°Ð· даннÑÑ , ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв, ÑÑ ÐµÐ¼ и ÑзÑков оÑноÑÑÑÑÑ Ðº ÑаÑÑиÑениÑм PostgreSQL.