CREATE ROLE
CREATE ROLE â ÑоздаÑÑ ÑÐ¾Ð»Ñ Ð² базе даннÑÑ
СинÑакÑиÑ
CREATE ROLEимÑ[ [ WITH ]паÑамеÑÑ[ ... ] ] ÐдеÑÑпаÑамеÑÑ: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMITпÑедел_подклÑÑений| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'паÑолÑ' | VALID UNTIL 'даÑа_вÑемÑ' | IN ROLEимÑ_Ñоли[, ...] | IN GROUPимÑ_Ñоли[, ...] | ROLEимÑ_Ñоли[, ...] | ADMINимÑ_Ñоли[, ...] | USERимÑ_Ñоли[, ...] | SYSIDuid
ÐпиÑание
CREATE ROLE добавлÑÐµÑ Ð½Ð¾Ð²ÑÑ ÑÐ¾Ð»Ñ Ð² клаÑÑÐµÑ Ð±Ð°Ð· даннÑÑ
Postgres Pro. Ð Ð¾Ð»Ñ â ÑÑо ÑÑÑноÑÑÑ, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²Ð»Ð°Ð´ÐµÑÑ Ð¾Ð±ÑекÑами и имеÑÑ Ð¾Ð¿ÑеделÑннÑе пÑава в базе; ÑÐ¾Ð»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедÑÑавлÑÑÑ Â«Ð¿Ð¾Ð»ÑзоваÑелÑ», «гÑÑппÑ» или и Ñо, и дÑÑгое, в завиÑимоÑÑи Ð¾Ñ Ð²Ð°ÑианÑа иÑполÑзованиÑ. Ðа инÑоÑмаÑией об ÑпÑавлении полÑзоваÑелÑми и пÑовеÑке подлинноÑÑи обÑаÑиÑеÑÑ Ðº Ðлаве 20 и Ðлаве 19. ЧÑÐ¾Ð±Ñ Ð²ÑполниÑÑ ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, необÑ
одимо бÑÑÑ ÑÑпеÑполÑзоваÑелем или имеÑÑ Ð¿Ñаво CREATEROLE.
УÑÑиÑе, ÑÑо Ñоли опÑеделÑÑÑÑÑ Ð½Ð° ÑÑовне клаÑÑеÑа баз даннÑÑ , Ñак ÑÑо они дейÑÑвÑÑÑ Ð²Ð¾ вÑÐµÑ Ð±Ð°Ð·Ð°Ñ Ð² клаÑÑеÑе.
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ Ñоздаваемой Ñоли.
SUPERUSERNOSUPERUSERÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÑа ÑÐ¾Ð»Ñ Â«ÑÑпеÑполÑзоваÑелем», коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑеопÑеделиÑÑ Ð²Ñе огÑаниÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа в базе даннÑÑ . СÑаÑÑÑ ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð½ÐµÑÑÑ Ð¾Ð¿Ð°ÑноÑÑÑ Ð¸ назнаÑаÑÑ ÐµÐ³Ð¾ ÑледÑÐµÑ ÑолÑко в ÑлÑÑае Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи. СоздаÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑолÑко ÑÑпеÑполÑзоваÑелÑ. РоÑÑÑÑÑÑвие ÑÑÐ¸Ñ Ð¿Ñедложений по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ
NOSUPERUSER.CREATEDBNOCREATEDBÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, ÑÐ¼Ð¾Ð¶ÐµÑ Ð»Ð¸ ÑÐ¾Ð»Ñ ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . Указание
CREATEDBдаÑÑ Ð½Ð¾Ð²Ð¾Ð¹ Ñоли ÑÑо пÑаво, аNOCREATEDBзапÑеÑÐ°ÐµÑ Ñоли ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑNOCREATEDB.CREATEROLENOCREATEROLEÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, ÑÐ¼Ð¾Ð¶ÐµÑ Ð»Ð¸ ÑÐ¾Ð»Ñ ÑоздаваÑÑ Ð½Ð¾Ð²Ñе Ñоли (Ñ. е. вÑполнÑÑÑ
CREATE ROLE). Ð Ð¾Ð»Ñ Ñ Ð¿ÑавомCREATEROLEÐ¼Ð¾Ð¶ÐµÑ Ñакже изменÑÑÑ Ð¸ ÑдалÑÑÑ Ð´ÑÑгие Ñоли. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑNOCREATEROLE.INHERITNOINHERITÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÐ¾Ð»Ñ Â«Ð½Ð°ÑледоваÑÑ» пÑава Ñолей, Ñленом коÑоÑÑÑ Ð¾Ð½Ð° ÑвлÑеÑÑÑ. Ð Ð¾Ð»Ñ Ñ Ð°ÑÑибÑÑом
INHERITÐ¼Ð¾Ð¶ÐµÑ Ð°Ð²ÑомаÑиÑеÑки иÑполÑзоваÑÑ Ð² базе даннÑÑ Ð»ÑбÑе пÑава, назнаÑеннÑе вÑем ÑолÑм, в коÑоÑÑе она вклÑÑена, непоÑÑедÑÑвенно или опоÑÑедованно. ÐезINHERITÑленÑÑво в дÑÑгой Ñоли позволÑÐµÑ ÑолÑко вÑполниÑÑSET ROLEи пеÑеклÑÑиÑÑÑÑ Ð½Ð° ÑÑÑ ÑолÑ; пÑавами, назнаÑеннÑми дÑÑгой Ñоли, можно бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑзоваÑÑÑÑ ÑолÑко поÑле ÑÑого. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑINHERIT.LOGINNOLOGINÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, ÑазÑеÑаеÑÑÑ Ð»Ð¸ новой Ñоли Ð²Ñ Ð¾Ð´ на ÑеÑвеÑ; Ñо еÑÑÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ ÑÑа ÑÐ¾Ð»Ñ ÑÑаÑÑ Ð½Ð°ÑалÑнÑм авÑоÑизованнÑм именем пÑи подклÑÑении клиенÑа. Ðожно ÑÑиÑаÑÑ, ÑÑо ÑÐ¾Ð»Ñ Ñ Ð°ÑÑибÑÑом
LOGINÑооÑвеÑÑÑвÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ. Роли без ÑÑого аÑÑибÑÑа бÑваÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпом в базе даннÑÑ , но ÑÑо не полÑзоваÑели в обÑÑном понимании. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ Ð²Ð°ÑианÑNOLOGIN, за иÑклÑÑением вÑзоваCREATE ROLEв виде CREATE USER.REPLICATIONNOREPLICATIONÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÐ¾Ð»Ñ ÑолÑÑ ÑепликаÑии. ЧÑÐ¾Ð±Ñ ÑÐ¾Ð»Ñ Ð¼Ð¾Ð³Ð»Ð° подклÑÑаÑÑÑÑ Ðº ÑеÑвеÑÑ Ð² Ñежиме ÑепликаÑии (в Ñежиме ÑизиÑеÑкой или логиÑеÑкой ÑепликаÑии) и ÑоздаваÑÑ/ÑдалÑÑÑ ÑлоÑÑ ÑепликаÑии, Ñ Ð½ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ ÑÑÐ¾Ñ Ð°ÑÑибÑÑ (либо ÑÑо должна бÑÑÑ ÑÐ¾Ð»Ñ ÑÑпеÑполÑзоваÑелÑ). РолÑ, имеÑÑÐ°Ñ Ð°ÑÑибÑÑ
REPLICATION, Ð¾Ð±Ð»Ð°Ð´Ð°ÐµÑ Ð¾ÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑими пÑивилегиÑми и поÑÑÐ¾Ð¼Ñ ÑÑÐ¾Ñ Ð°ÑÑибÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ ÑолÑко Ñоли, ÑакÑиÑеÑки иÑполÑзÑемÑе Ð´Ð»Ñ ÑепликаÑии. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ Ð²Ð°ÑианÑNOREPLICATION. СоздаваÑÑ Ñоли Ñ Ð°ÑÑибÑÑомREPLICATIONÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.BYPASSRLSNOBYPASSRLSÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, бÑдÑÑ Ð»Ð¸ Ð´Ð»Ñ Ñоли игноÑиÑоваÑÑÑÑ Ð²Ñе полиÑики заÑиÑÑ Ð½Ð° ÑÑовне ÑÑÑок (RLS). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ Ð²Ð°ÑианÑ
NOBYPASSRLS. СоздаваÑÑ Ñоли Ñ Ð°ÑÑибÑÑомNOBYPASSRLSÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм.ÐамеÑÑÑе, ÑÑо pg_dump по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑклÑÑаеÑ
row_security(ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°ÑениеOFF), ÑÑÐ¾Ð±Ñ Ð³Ð°ÑанÑиÑованно бÑло вÑгÑÑжено вÑÑ ÑодеÑжимое ÑаблиÑÑ. ÐÑли полÑзоваÑелÑ, запÑÑкаÑÑий pg_dump, не бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð¿Ñав, он полÑÑÐ¸Ñ Ð¾ÑибкÑ. Ðднако ÑÑпеÑполÑзоваÑели и Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð²ÑгÑÑжаемой ÑаблиÑÑ Ð²Ñегда Ð¾Ð±Ñ Ð¾Ð´ÑÑ Ð·Ð°ÑиÑÑ RLS.CONNECTION LIMITпÑедел_подклÑÑенийÐÑли Ñоли ÑазÑеÑÑн Ð²Ñ Ð¾Ð´, ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð¿ÑеделÑеÑ, ÑколÑко паÑаллелÑнÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑений Ð¼Ð¾Ð¶ÐµÑ ÑÑÑановиÑÑ ÑолÑ. ÐнаÑение -1 (по ÑмолÑаниÑ) ÑÐ½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð³ÑаниÑение. ÐамеÑÑÑе, ÑÑо под ÑÑо огÑаниÑение подпадаÑÑ ÑолÑко обÑÑнÑе подклÑÑениÑ. Ðи подгоÑовленнÑе ÑÑанзакÑии, ни ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑоновÑÑ ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов в ÑаÑÑÑÑ Ð½Ðµ беÑÑÑÑÑ.
PASSWORDпаÑолÑÐадаÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ñоли. (ÐаÑÐ¾Ð»Ñ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ ÑолÑко Ð´Ð»Ñ Ñолей Ñ Ð°ÑÑибÑÑом
LOGIN, но задаÑÑ ÐµÐ³Ð¾ можно и Ð´Ð»Ñ Ñолей без Ñакого аÑÑибÑÑа.) ÐÑли пÑовеÑка подлинноÑÑи по паÑÐ¾Ð»Ñ Ð½Ðµ бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ, ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ опÑÑÑиÑÑ. ÐÑи Ñказании пÑÑÑого знаÑÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð´Ð°Ð½ паÑÐ¾Ð»Ñ NULL, ÑÑо не Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¿ÑойÑи пÑовеÑÐºÑ Ð¿Ð¾Ð´Ð»Ð¸Ð½Ð½Ð¾ÑÑи по паÑолÑ. ÐÑи желании паÑÐ¾Ð»Ñ NULL можно ÑÑÑановиÑÑ Ñвно, ÑказавPASSWORD NULL.ENCRYPTEDUNENCRYPTEDÐÑи клÑÑевÑе Ñлова опÑеделÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ паÑÐ¾Ð»Ñ Ñ ÑаниÑÑÑÑ Ð² ÑиÑÑемнÑÑ ÐºÐ°ÑÐ°Ð»Ð¾Ð³Ð°Ñ Ð² заÑиÑÑованном виде. (ÐÑи оÑÑÑÑÑÑвии Ñвного ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð¿ÑеделÑеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑионнÑм паÑамеÑÑом password_encryption.) ÐÑли паÑÐ¾Ð»Ñ Ð¿ÑедÑÑавлен в виде MD5-Ñ ÐµÑа, он ÑÐ¾Ñ ÑанÑеÑÑÑ ÐºÐ°Ðº еÑÑÑ, вне завиÑимоÑÑи Ð¾Ñ Ñого, пÑиÑÑÑÑÑвÑÐµÑ Ð»Ð¸ Ñказание
ENCRYPTEDилиUNENCRYPTED(Ñак как ÑиÑÑема не Ð¼Ð¾Ð¶ÐµÑ ÑаÑÑиÑÑоваÑÑ Ð·Ð°ÑиÑÑованнÑй паÑолÑ). ÐÑо позволÑÐµÑ Ð²ÑгÑÑжаÑÑ/загÑÑжаÑÑ Ð·Ð°ÑиÑÑованнÑе паÑоли пÑи ÑкÑпоÑÑе/импоÑÑе даннÑÑ .VALID UNTIL'даÑа_вÑемÑ'ÐÑедложение
VALID UNTILÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð´Ð°ÑÑ Ð¸ вÑемÑ, поÑле коÑоÑого паÑÐ¾Ð»Ñ Ñоли пеÑеÑÑаÑÑ Ð´ÐµÐ¹ÑÑвоваÑÑ. ÐÑли ÑÑо пÑедложение оÑÑÑÑÑÑвÑеÑ, ÑÑок дейÑÑÐ²Ð¸Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð±ÑÐ´ÐµÑ Ð½ÐµÐ¾Ð³ÑаниÑеннÑм.IN ROLEимÑ_ÑолиРпÑедложении
IN ROLEпеÑеÑиÑлÑÑÑÑÑ Ð¾Ð´Ð½Ð° или неÑколÑко ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ñолей, в коÑоÑÑе бÑÐ´ÐµÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ вклÑÑена Ð½Ð¾Ð²Ð°Ñ ÑолÑ. (ÐамеÑÑÑе, ÑÑо добавиÑÑ Ð½Ð¾Ð²ÑÑ ÑÐ¾Ð»Ñ Ñ Ð¿Ñавами админиÑÑÑаÑоÑа Ñаким обÑазом нелÑзÑ; Ð´Ð»Ñ ÑÑого надо оÑделÑно вÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑGRANT.)IN GROUPимÑ_ÑолиIN GROUPâ ÑÑÑаÑевÑее напиÑание пÑедложениÑIN ROLE.ROLEимÑ_ÑолиРпÑедложении
ROLEпеÑеÑиÑлÑÑÑÑÑ Ð¾Ð´Ð½Ð° или неÑколÑко ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ñолей, коÑоÑÑе авÑомаÑиÑеÑки ÑÑановÑÑÑÑ Ñленами Ñоздаваемой Ñоли. (Ðо ÑÑÑи Ñаким обÑазом Ð½Ð¾Ð²Ð°Ñ ÑÐ¾Ð»Ñ ÑÑановиÑÑÑ Â«Ð³ÑÑппой».)ADMINимÑ_ÑолиÐÑедложение
ADMINподобноROLE, но пеÑеÑиÑленнÑе в нÑм Ñоли вклÑÑаÑÑÑÑ Ð² новÑÑ ÑÐ¾Ð»Ñ Ñ Ð°ÑÑибÑÑомWITH ADMIN OPTION, ÑÑо даÑÑ Ð¸Ð¼ пÑаво вклÑÑаÑÑ Ð² ÑÑÑ ÑÐ¾Ð»Ñ Ð´ÑÑгие Ñоли.USERимÑ_ÑолиÐÑедложение
USERÑвлÑеÑÑÑ ÑÑÑаÑевÑим напиÑанием пÑедложениÑROLE.SYSIDuidÐÑедложение
SYSIDигноÑиÑÑеÑÑÑ, но пÑинимаеÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи.
ÐамеÑаниÑ
ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð°ÑÑибÑÑов Ñоли пÑименÑеÑÑÑ ALTER ROLE, а Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñоли â DROP ROLE. ÐÑе аÑÑибÑÑÑ, заданнÑе в CREATE ROLE, могÑÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð¿Ð¾Ð·Ð´Ð½ÐµÐµ командами ALTER ROLE.
ÐÐ»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñленов Ñолей, иÑполÑзÑемÑÑ Ð² каÑеÑÑве гÑÑпп, ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ GRANT и REVOKE.
ÐÑедложение VALID UNTIL опÑеделÑÐµÑ ÑÑок дейÑÑÐ²Ð¸Ñ ÑолÑко паÑолÑ, но не Ñоли как Ñаковой. Ð ÑаÑÑноÑÑи, огÑаниÑение ÑÑока паÑÐ¾Ð»Ñ Ð½Ðµ дейÑÑвÑÐµÑ Ð¿Ñи вÑ
оде полÑзоваÑÐµÐ»Ñ Ð±ÐµÐ· пÑовеÑки подлинноÑÑи по паÑолÑ.
ÐÑÑибÑÑ INHERIT ÑпÑавлÑÐµÑ Ð½Ð°Ñледованием назнаÑаемÑÑ
пÑав (Ñо еÑÑÑ Ð¿Ñавами доÑÑÑпа к обÑекÑам баз даннÑÑ
и ÑленÑÑвом в ÑолÑÑ
). Ðго дейÑÑвие не ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° ÑпеÑиалÑнÑе аÑÑибÑÑÑ, ÑÑÑанавливаемÑе командами CREATE ROLE и ALTER ROLE. ÐапÑимеÑ, ÑленÑÑва в Ñоли Ñ Ð¿Ñавом CREATEDB недоÑÑаÑоÑно Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ñава ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, даже еÑли ÑÑÑановлен аÑÑибÑÑ INHERIT; ÑÑÐ¾Ð±Ñ Ð²Ð¾ÑполÑзоваÑÑÑÑ Ð¿Ñавом ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, необÑ
одимо пеÑеклÑÑиÑÑÑÑ Ð½Ð° ÑÑÑ ÑолÑ, вÑполнив SET ROLE.
ÐÑÑибÑÑ INHERIT ÑÑÑанавливаеÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð² ÑелÑÑ
обÑаÑной ÑовмеÑÑимоÑÑи: в пÑедÑдÑÑиÑ
вÑпÑÑкаÑ
Postgres Pro полÑзоваÑели вÑегда обладали вÑеми пÑавами гÑÑпп, в коÑоÑÑе они бÑли вклÑÑенÑ. Ðднако NOINHERIT по ÑмÑÑÐ»Ñ Ð±Ð»Ð¸Ð¶Ðµ к ÑомÑ, ÑÑо опиÑано в ÑÑандаÑÑе SQL.
ÐÑдÑÑе оÑÑоÑÐ¾Ð¶Ð½Ñ Ñ Ð¿Ñавом CREATEROLE. Ðа Ñоли, ÑоздаваемÑе командой CREATEROLE, не ÑаÑпÑоÑÑÑанÑеÑÑÑ ÐºÐ¾Ð½ÑепÑÐ¸Ñ Ð½Ð°ÑледованиÑ. ÐÑо знаÑиÑ, ÑÑо даже еÑли ÑÐ¾Ð»Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð¾Ð¿ÑеделÑнного пÑава, но Ð¼Ð¾Ð¶ÐµÑ ÑоздаваÑÑ Ð´ÑÑгие Ñоли, она вполне ÑпоÑобна ÑоздаÑÑ Ð´ÑÑгÑÑ ÑÐ¾Ð»Ñ Ñ Ð¾ÑлиÑнÑм набоÑом пÑав (за иÑклÑÑением ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñолей Ñ Ð¿Ñавами ÑÑпеÑполÑзоваÑелÑ). ÐапÑимеÑ, еÑли ÑÐ¾Ð»Ñ Â«user» Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво CREATEROLE, но не CREATEDB, она Ñем не менее Ð¼Ð¾Ð¶ÐµÑ ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑÐ¾Ð»Ñ Ñ Ð¿Ñавом CREATEDB. ÐоÑÑÐ¾Ð¼Ñ ÑÐ¾Ð»Ñ Ñ Ð¿Ñавом CREATEROLE ÑледÑÐµÑ Ð²Ð¾ÑпÑинимаÑÑ ÐºÐ°Ðº ÑÐ¾Ð»Ñ Ð¿Ð¾ÑÑи ÑÑпеÑполÑзоваÑелÑ.
Postgres Pro вклÑÑÐ°ÐµÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ createuser, коÑоÑÐ°Ñ Ð¿ÑедоÑÑавлÑÐµÑ ÑÑ Ð¶Ðµ ÑÑнкÑионалÑноÑÑÑ, ÑÑо и команда CREATE ROLE (на Ñамом деле она вÑзÑÐ²Ð°ÐµÑ ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ), но Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ Ð² командной оболоÑке.
ÐгÑаниÑение CONNECTION LIMIT дейÑÑвÑÐµÑ ÑолÑко пÑиблизиÑелÑно; еÑли одновÑеменно запÑÑкаÑÑÑÑ Ð´Ð²Ð° ÑеанÑа, Ñогда как Ð´Ð»Ñ ÑÑой Ñоли оÑÑаÑÑÑÑ ÑолÑко одно «Ñвободное меÑÑо», Ð¼Ð¾Ð¶ÐµÑ Ñак ÑлÑÑиÑÑÑÑ, ÑÑо бÑдÑÑ Ð¾ÑÐºÐ»Ð¾Ð½ÐµÐ½Ñ Ð¾Ð±Ð° подклÑÑениÑ. ÐÑоме Ñого, ÑÑо огÑаниÑение не ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° ÑÑпеÑполÑзоваÑелей.
УказÑÐ²Ð°Ñ Ð² ÑÑой команде незаÑиÑÑованнÑй паÑолÑ, ÑледÑÐµÑ Ð¿ÑоÑвлÑÑÑ Ð¾ÑÑоÑожноÑÑÑ. ÐаÑÐ¾Ð»Ñ Ð±ÑÐ´ÐµÑ Ð¿ÐµÑедаваÑÑÑÑ Ð½Ð° ÑеÑÐ²ÐµÑ Ð¾ÑкÑÑÑÑм ÑекÑÑом и Ð¼Ð¾Ð¶ÐµÑ Ñакже запиÑÑваÑÑÑÑ Ð² иÑÑоÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ клиенÑа или в пÑоÑокол ÑабоÑÑ ÑеÑвеÑа. Ðоманда createuser, однако, пеÑедаÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð·Ð°ÑиÑÑованнÑм. ÐÑоме Ñого, в psql еÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° \password, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾ÑоÑой можно безопаÑно ÑмениÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð¿Ð¾Ð·Ð¶Ðµ.
ÐÑимеÑÑ
Создание Ñоли, Ð´Ð»Ñ ÐºÐ¾ÑоÑой ÑазÑеÑÑн Ð²Ñ Ð¾Ð´, но не задан паÑолÑ:
CREATE ROLE jonathan LOGIN;
Создание Ñоли Ñ Ð¿Ð°Ñолем:
CREATE USER davide WITH PASSWORD 'jw8s0F4';
(CREATE USER дейÑÑвÑÐµÑ Ñак же, как CREATE ROLE, но подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ ÐµÑÑ Ð¸ аÑÑибÑÑ LOGIN.)
Создание Ñоли Ñ Ð¿Ð°Ñолем, дейÑÑвÑÑÑим до конÑа 2004 г., Ñо еÑÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð¿ÐµÑеÑÑаÑÑ Ð´ÐµÐ¹ÑÑвоваÑÑ Ð² пеÑвÑÑ Ð¶Ðµ ÑекÑÐ½Ð´Ñ 2005 г.
CREATE ROLE miriam WITH LOGIN PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01';
Создание Ñоли, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ ÑпÑавлÑÑÑ ÑолÑми:
CREATE ROLE admin WITH CREATEDB CREATEROLE;
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ CREATE ROLE опиÑан в ÑÑандаÑÑе SQL, но ÑÑандаÑÑ ÑÑебÑÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑжки ÑолÑко ÑледÑÑÑего ÑинÑакÑиÑа:
CREATE ROLEимÑ[ WITH ADMINимÑ_Ñоли]
ÐозможноÑÑÑ ÑоздаваÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво наÑалÑнÑÑ
админиÑÑÑаÑоÑов и вÑе дÑÑгие паÑамеÑÑÑ CREATE ROLE оÑноÑÑÑÑÑ Ðº ÑаÑÑиÑениÑм Postgres Pro.
Ð ÑÑандаÑÑе SQL опÑеделÑÑÑÑÑ ÐºÐ¾Ð½ÑепÑии полÑзоваÑелей и Ñолей, но в нÑм они ÑаÑÑмаÑÑиваÑÑÑÑ ÐºÐ°Ðº оÑделÑнÑе ÑÑÑноÑÑи, а вÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей ÑÑиÑаÑÑÑÑ Ð²Ð½ÑÑÑенней ÑпеÑиÑикой СУÐÐ. Ð Postgres Pro Ð¼Ñ ÑеÑили обÑединиÑÑ Ð¿Ð¾Ð»ÑзоваÑелей и Ñоли в единÑÑ ÑÑÑноÑÑÑ, Ñак ÑÑо Ñоли полÑÑили дополниÑелÑнÑе аÑÑибÑÑÑ, не опиÑаннÑе в ÑÑандаÑÑе.
Ðоведение, наиболее близкое к опиÑÐ°Ð½Ð½Ð¾Ð¼Ñ Ð² ÑÑандаÑÑе SQL, можно полÑÑиÑÑ, еÑли ÑоздаваÑÑ Ð¿Ð¾Ð»ÑзоваÑелей Ñ Ð°ÑÑибÑÑом NOINHERIT, а Ñоли â Ñ Ð°ÑÑибÑÑом INHERIT.