5.6. ÐÑава
Ðогда в базе даннÑÑ ÑоздаÑÑÑÑ Ð¾Ð±ÑекÑ, ÐµÐ¼Ñ Ð½Ð°Ð·Ð½Ð°ÑаеÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ. ÐладелÑÑем обÑÑно ÑÑановиÑÑÑ ÑолÑ, Ñ ÐºÐ¾ÑоÑой бÑл вÑполнен опеÑаÑÐ¾Ñ ÑозданиÑ. ÐÐ»Ñ Ð±Ð¾Ð»ÑÑинÑÑва Ñипов обÑекÑов в иÑÑ Ð¾Ð´Ð½Ð¾Ð¼ ÑоÑÑоÑнии ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ (или ÑÑпеÑполÑзоваÑелÑ) Ð¼Ð¾Ð¶ÐµÑ Ð´ÐµÐ»Ð°ÑÑ Ñ Ð¾Ð±ÑекÑом вÑÑ, ÑÑо Ñгодно. ЧÑÐ¾Ð±Ñ ÑазÑеÑиÑÑ Ð¸ÑполÑзоваÑÑ ÐµÐ³Ð¾ дÑÑгим ÑолÑм, нÑжно даÑÑ Ð¸Ð¼ пÑава.
СÑÑеÑÑвÑÐµÑ Ð½ÐµÑколÑко Ñипов пÑав: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE и USAGE. ÐÐ°Ð±Ð¾Ñ Ð¿Ñав, пÑименимÑÑ
к опÑеделÑÐ½Ð½Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ, завиÑÐ¸Ñ Ð¾Ñ Ñипа обÑекÑа (ÑаблиÑа, ÑÑнкÑÐ¸Ñ Ð¸ Ñ. д.). ÐолнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑазлиÑнÑÑ
ÑипаÑ
пÑав, поддеÑживаемÑÑ
Postgres Pro, Ð²Ñ Ð½Ð°Ð¹Ð´ÐµÑе на ÑÑÑаниÑе ÑпÑавки GRANT. ÐÑ Ñакже ÑвидиÑе, как пÑименÑÑÑÑÑ ÑÑи пÑава, в ÑледÑÑÑиÑ
ÑазделаÑ
и главаÑ
.
ÐеоÑÑемлемое пÑаво изменÑÑÑ Ð¸Ð»Ð¸ ÑдалÑÑÑ Ð¾Ð±ÑÐµÐºÑ Ð¸Ð¼ÐµÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¾Ð±ÑекÑа.
ÐбÑекÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ назнаÑиÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ владелÑÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER Ð´Ð»Ñ ÑооÑвеÑÑÑвÑÑÑего Ñипа обÑекÑа, напÑÐ¸Ð¼ÐµÑ ALTER TABLE. СÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð´ÐµÐ»Ð°ÑÑ ÑÑо без огÑаниÑений, а обÑÑнÑй полÑзоваÑелÑ, ÑолÑко еÑли он ÑвлÑеÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно ÑекÑÑим владелÑÑем обÑекÑа (или Ñленом Ñоли владелÑÑа) и Ñленом новой Ñоли.
ÐÐ»Ñ Ð½Ð°Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ñав пÑименÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° GRANT. ÐапÑимеÑ, еÑли в базе даннÑÑ
еÑÑÑ ÑÐ¾Ð»Ñ joe и ÑаблиÑа accounts, пÑаво на изменение ÑаблиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ даÑÑ ÑÑой Ñоли Ñак:
GRANT UPDATE ON accounts TO joe;
ÐÑли вмеÑÑо конкÑеÑного пÑава напиÑаÑÑ ALL, ÑÐ¾Ð»Ñ Ð¿Ð¾Ð»ÑÑÐ¸Ñ Ð²Ñе пÑава, пÑименимÑе Ð´Ð»Ñ Ð¾Ð±ÑекÑа ÑÑого Ñипа.
ÐÐ»Ñ Ð½Ð°Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ñава вÑем ÑолÑм в ÑиÑÑеме можно иÑполÑзоваÑÑ ÑпеÑиалÑное Ð¸Ð¼Ñ Â«Ñоли»: PUBLIC. Также Ð´Ð»Ñ ÑпÑоÑÐµÐ½Ð¸Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑолÑми, когда в базе даннÑÑ
еÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво полÑзоваÑелей, можно наÑÑÑоиÑÑ Â«Ð³ÑÑпповÑе» Ñоли; подÑобнее об ÑÑом Ñм. ÐлавÑ 20.
ЧÑÐ¾Ð±Ñ Ð»Ð¸ÑиÑÑ Ð¿Ð¾Ð»ÑзоваÑелей пÑав, иÑполÑзÑйÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ REVOKE:
REVOKE ALL ON accounts FROM PUBLIC;
ÐÑобÑе пÑава владелÑÑа обÑекÑа (Ñо еÑÑÑ Ð¿Ñава на вÑполнение DROP, GRANT, REVOKE и Ñ. д.) вÑегда неÑвно закÑÐµÐ¿Ð»ÐµÐ½Ñ Ð·Ð° владелÑÑем и иÑ
нелÑÐ·Ñ Ð½Ð°Ð·Ð½Ð°ÑиÑÑ Ð¸Ð»Ð¸ оÑобÑаÑÑ. Ðо Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¾Ð±ÑекÑа Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ÑиÑÑ ÑÐµÐ±Ñ Ð¾Ð±ÑÑнÑÑ
пÑав, напÑимеÑ, ÑазÑеÑиÑÑ Ð²Ñем, вклÑÑÐ°Ñ ÑебÑ, ÑолÑко ÑÑение ÑаблиÑÑ.
ÐбÑÑно ÑаÑпоÑÑжаÑÑÑÑ Ð¿Ñавами Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¾Ð±ÑекÑа (или ÑÑпеÑполÑзоваÑелÑ). Ðднако возможно даÑÑ Ð¿Ñаво доÑÑÑпа к обÑекÑÑ Â«Ñ Ð¿Ñавом пеÑедаÑи», ÑÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð¿Ð¾Ð»ÑÑивÑÐµÐ¼Ñ Ñакое пÑаво назнаÑаÑÑ ÐµÐ³Ð¾ дÑÑгим. ÐÑли Ñакое пÑаво пеÑедаÑи впоÑледÑÑвии бÑÐ´ÐµÑ Ð¾Ñозвано, Ñо вÑе, кÑо полÑÑил данное пÑаво доÑÑÑпа (непоÑÑедÑÑвенно или по ÑепоÑке пеÑедаÑи), поÑеÑÑÑÑ ÐµÐ³Ð¾. ÐодÑобнее об ÑÑом Ñм. ÑпÑÐ°Ð²ÐºÑ GRANT и REVOKE.