CREATE ROLE
СинÑакÑиÑ
CREATE ROLE Ð¸Ð¼Ñ [ [ WITH ] паÑамеÑÑ [ ... ] ]
ÐдеÑÑ Ð¿Ð°ÑамеÑÑ:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CREATEUSER | NOCREATEUSER
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| CONNECTION LIMIT пÑедел_подклÑÑений
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'паÑолÑ'
| VALID UNTIL 'даÑа_вÑемÑ'
| IN ROLE имÑ_Ñоли [, ...]
| IN GROUP имÑ_Ñоли [, ...]
| ROLE имÑ_Ñоли [, ...]
| ADMIN имÑ_Ñоли [, ...]
| USER имÑ_Ñоли [, ...]
| SYSID uidÐпиÑание
CREATE ROLE добавлÑÐµÑ Ð½Ð¾Ð²ÑÑ ÑÐ¾Ð»Ñ Ð² клаÑÑÐµÑ Ð±Ð°Ð· даннÑÑ PostgreSQL. Ð Ð¾Ð»Ñ â ÑÑо ÑÑÑноÑÑÑ, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²Ð»Ð°Ð´ÐµÑÑ Ð¾Ð±ÑекÑами и имеÑÑ Ð¾Ð¿ÑеделÑннÑе пÑава в базе; ÑÐ¾Ð»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедÑÑавлÑÑÑ "полÑзоваÑелÑ", "гÑÑппÑ" или и Ñо, и дÑÑгое, в завиÑимоÑÑи Ð¾Ñ Ð²Ð°ÑианÑа иÑполÑзованиÑ. Ðа инÑоÑмаÑией об ÑпÑавлении полÑзоваÑелÑми и пÑовеÑке подлинноÑÑи обÑаÑиÑеÑÑ Ðº Ðлаве 20 и Ðлаве 19. ЧÑÐ¾Ð±Ñ Ð²ÑполниÑÑ ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ бÑÑÑ ÑÑпеÑполÑзоваÑелем или имеÑÑ Ð¿Ñаво CREATEROLE.
УÑÑиÑе, ÑÑо Ñоли опÑеделÑÑÑÑÑ Ð½Ð° ÑÑовне клаÑÑеÑа баз даннÑÑ , Ñак ÑÑо они дейÑÑвÑÑÑ Ð²Ð¾ вÑÐµÑ Ð±Ð°Ð·Ð°Ñ Ð² клаÑÑеÑе.
ÐаÑамеÑÑÑ
- имÑ
ÐÐ¼Ñ Ñоздаваемой Ñоли.
- SUPERUSER
NOSUPERUSER ÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÑа ÑÐ¾Ð»Ñ "ÑÑпеÑполÑзоваÑелем", коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑеопÑеделиÑÑ Ð²Ñе огÑаниÑÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпа в базе даннÑÑ . СÑаÑÑÑ ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð½ÐµÑÑÑ Ð¾Ð¿Ð°ÑноÑÑÑ Ð¸ назнаÑаÑÑ ÐµÐ³Ð¾ ÑледÑÐµÑ ÑолÑко в ÑлÑÑае Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи. СоздаÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑолÑко ÑÑпеÑполÑзоваÑелÑ. РоÑÑÑÑÑÑвие ÑÑÐ¸Ñ Ð¿Ñедложений по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ NOSUPERUSER.
- CREATEDB
NOCREATEDB ÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, ÑÐ¼Ð¾Ð¶ÐµÑ Ð»Ð¸ ÑÐ¾Ð»Ñ ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . Указание CREATEDB даÑÑ Ð½Ð¾Ð²Ð¾Ð¹ Ñоли ÑÑо пÑаво, а NOCREATEDB запÑеÑÐ°ÐµÑ Ñоли ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ NOCREATEDB.
- CREATEROLE
NOCREATEROLE ÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, ÑÐ¼Ð¾Ð¶ÐµÑ Ð»Ð¸ ÑÐ¾Ð»Ñ ÑоздаваÑÑ Ð½Ð¾Ð²Ñе Ñоли (Ñ. е. вÑполнÑÑÑ CREATE ROLE). Ð Ð¾Ð»Ñ Ñ Ð¿Ñавом CREATEROLE Ð¼Ð¾Ð¶ÐµÑ Ñакже изменÑÑÑ Ð¸ ÑдалÑÑÑ Ð´ÑÑгие Ñоли. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ NOCREATEROLE.
- CREATEUSER
NOCREATEUSER ÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑвлÑÑÑÑÑ ÑÑÑаÑевÑими, но по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¿ÑинимаÑÑÑÑ, как алÑÑеÑнаÑивное напиÑание SUPERUSER и NOSUPERUSER. УÑÑиÑе, ÑÑо они не ÑавнознаÑÐ½Ñ Ð¿Ð°Ñе CREATEROLE, как можно бÑло Ð±Ñ Ð¿Ð¾Ð´ÑмаÑÑ!
- INHERIT
NOINHERIT ÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÐ¾Ð»Ñ "наÑледоваÑÑ" пÑава Ñолей, Ñленом коÑоÑÑÑ Ð¾Ð½Ð° ÑвлÑеÑÑÑ. Ð Ð¾Ð»Ñ Ñ Ð°ÑÑибÑÑом INHERIT Ð¼Ð¾Ð¶ÐµÑ Ð°Ð²ÑомаÑиÑеÑки иÑполÑзоваÑÑ Ð² базе даннÑÑ Ð»ÑбÑе пÑава, назнаÑеннÑе вÑем ÑолÑм, в коÑоÑÑе она вклÑÑена, непоÑÑедÑÑвенно или опоÑÑедованно. Ðез INHERIT ÑленÑÑво в дÑÑгой Ñоли позволÑÐµÑ ÑолÑко вÑполниÑÑ SET ROLE и пеÑеклÑÑиÑÑÑÑ Ð½Ð° ÑÑÑ ÑолÑ; пÑавами, назнаÑеннÑми дÑÑгой Ñоли, можно бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑзоваÑÑÑÑ ÑолÑко поÑле ÑÑого. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ INHERIT.
- LOGIN
NOLOGIN ÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, ÑазÑеÑаеÑÑÑ Ð»Ð¸ новой Ñоли Ð²Ñ Ð¾Ð´ на ÑеÑвеÑ; Ñо еÑÑÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ ÑÑа ÑÐ¾Ð»Ñ ÑÑаÑÑ Ð½Ð°ÑалÑнÑм авÑоÑизованнÑм именем пÑи подклÑÑении клиенÑа. Ðожно ÑÑиÑаÑÑ, ÑÑо ÑÐ¾Ð»Ñ Ñ Ð°ÑÑибÑÑом LOGIN ÑооÑвеÑÑÑвÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ. Роли без ÑÑого аÑÑибÑÑа бÑваÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑÑпом в базе даннÑÑ , но ÑÑо не полÑзоваÑели в обÑÑном понимании. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ NOLOGIN, за иÑклÑÑением вÑзова CREATE ROLE в виде CREATE USER.
- REPLICATION
NOREPLICATION ÐÑи пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ, ÑÐ¼Ð¾Ð¶ÐµÑ Ð»Ð¸ Ð½Ð¾Ð²Ð°Ñ ÑÐ¾Ð»Ñ Ð·Ð°Ð¿ÑÑкаÑÑ Ð¿Ð¾ÑоковÑÑ ÑепликаÑÐ¸Ñ Ð¸Ð»Ð¸ пеÑеклÑÑаÑÑ ÑиÑÑÐµÐ¼Ñ Ð² Ñежим ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ из него. Ð Ð¾Ð»Ñ Ñ Ð°ÑÑибÑÑом REPLICATION полÑÑÐ°ÐµÑ Ð¾ÑÐµÐ½Ñ ÑиÑокие полномоÑиÑ, поÑÑÐ¾Ð¼Ñ ÐµÐ³Ð¾ ÑледÑÐµÑ Ð½Ð°Ð·Ð½Ð°ÑаÑÑ, ÑолÑко еÑли ÑÐ¾Ð»Ñ ÑакÑиÑеÑки пÑименÑеÑÑÑ Ð´Ð»Ñ ÑепликаÑии. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ NOREPLICATION.
- CONNECTION LIMIT пÑедел_подклÑÑений
ÐÑли Ñоли ÑазÑеÑÑн Ð²Ñ Ð¾Ð´, ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð¿ÑеделÑÐµÑ Ð¼Ð°ÐºÑималÑное ÑиÑло одновÑеменнÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑений, ÑазÑеÑÑннÑÑ Ð´Ð»Ñ ÑÑой Ñоли. ÐнаÑение -1 (по ÑмолÑаниÑ) оÑклÑÑÐ°ÐµÑ Ð¾Ð³ÑаниÑение.
- PASSWORD паÑолÑ
ÐадаÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ñоли. (ÐаÑÐ¾Ð»Ñ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ ÑолÑко Ð´Ð»Ñ Ñолей Ñ Ð°ÑÑибÑÑом LOGIN, но задаÑÑ ÐµÐ³Ð¾ можно и Ð´Ð»Ñ Ñолей без Ñакого аÑÑибÑÑа.) ÐÑли пÑовеÑка подлинноÑÑи по паÑÐ¾Ð»Ñ Ð½Ðµ бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ, ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ опÑÑÑиÑÑ. ÐÑи Ñказании пÑÑÑого знаÑÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð´Ð°Ð½ паÑÐ¾Ð»Ñ NULL, ÑÑо не Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¿ÑойÑи пÑовеÑÐºÑ Ð¿Ð¾Ð´Ð»Ð¸Ð½Ð½Ð¾ÑÑи по паÑолÑ. ÐÑи желании паÑÐ¾Ð»Ñ NULL можно ÑÑÑановиÑÑ Ñвно, Ñказав PASSWORD NULL.
- ENCRYPTED
UNENCRYPTED ÐÑи клÑÑевÑе Ñлова опÑеделÑÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ паÑÐ¾Ð»Ñ Ñ ÑаниÑÑÑÑ Ð² ÑиÑÑемнÑÑ ÐºÐ°ÑÐ°Ð»Ð¾Ð³Ð°Ñ Ð² заÑиÑÑованном виде. (ÐÑи оÑÑÑÑÑÑвии Ñвного ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð¿ÑеделÑеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑионнÑм паÑамеÑÑом password_encryption.) ÐÑли паÑÐ¾Ð»Ñ Ð¿ÑедÑÑавлен в виде MD5-Ñ ÐµÑа, он ÑÐ¾Ñ ÑанÑеÑÑÑ ÐºÐ°Ðº еÑÑÑ, вне завиÑимоÑÑи Ð¾Ñ Ñого, пÑиÑÑÑÑÑвÑÐµÑ Ð»Ð¸ Ñказание ENCRYPTED или UNENCRYPTED (Ñак как ÑиÑÑема не Ð¼Ð¾Ð¶ÐµÑ ÑаÑÑиÑÑоваÑÑ Ð·Ð°ÑиÑÑованнÑй паÑолÑ). ÐÑо позволÑÐµÑ Ð²ÑгÑÑжаÑÑ/загÑÑжаÑÑ Ð·Ð°ÑиÑÑованнÑе паÑоли пÑи ÑкÑпоÑÑе/импоÑÑе даннÑÑ .
УÑÑиÑе, ÑÑо ÑÑаÑÑе клиенÑÑ Ð¼Ð¾Ð³ÑÑ Ð½Ðµ поддеÑживаÑÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ пÑовеÑки подлинноÑÑи Ñ MD5, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñй Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ñолей, Ñ ÑанÑÑÐ¸Ñ ÑÑ Ð² заÑиÑÑованном виде.
- 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.
- SYSID uid
ÐÑедложение SYSID игноÑиÑÑеÑÑÑ, но пÑинимаеÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи.
ÐамеÑаниÑ
ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð°ÑÑибÑÑов Ñоли пÑименÑеÑÑÑ ALTER ROLE, а Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñоли â DROP ROLE. ÐÑе аÑÑибÑÑÑ, заданнÑе в CREATE ROLE, могÑÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð¿Ð¾Ð·Ð´Ð½ÐµÐµ командами ALTER ROLE.
ÐÐ»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñленов Ñолей, иÑполÑзÑемÑÑ Ð² каÑеÑÑве гÑÑпп, ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ GRANT и REVOKE.
ÐÑедложение VALID UNTIL опÑеделÑÐµÑ ÑÑок дейÑÑÐ²Ð¸Ñ ÑолÑко паÑолÑ, но не Ñоли как Ñаковой. Ð ÑаÑÑноÑÑи, огÑаниÑение ÑÑока паÑÐ¾Ð»Ñ Ð½Ðµ дейÑÑвÑÐµÑ Ð¿Ñи Ð²Ñ Ð¾Ð´Ðµ полÑзоваÑÐµÐ»Ñ Ð±ÐµÐ· пÑовеÑки подлинноÑÑи по паÑолÑ.
ÐÑÑибÑÑ INHERIT ÑпÑавлÑÐµÑ Ð½Ð°Ñледованием назнаÑаемÑÑ Ð¿Ñав (Ñо еÑÑÑ Ð¿Ñавами доÑÑÑпа к обÑекÑам баз даннÑÑ Ð¸ ÑленÑÑвом в ÑолÑÑ ). Ðго дейÑÑвие не ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° ÑпеÑиалÑнÑе аÑÑибÑÑÑ, ÑÑÑанавливаемÑе командами CREATE ROLE и ALTER ROLE. ÐапÑимеÑ, ÑленÑÑва в Ñоли Ñ Ð¿Ñавом CREATEDB недоÑÑаÑоÑно Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ñава ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , даже еÑли ÑÑÑановлен аÑÑибÑÑ INHERIT; ÑÑÐ¾Ð±Ñ Ð²Ð¾ÑполÑзоваÑÑÑÑ Ð¿Ñавом ÑоздаваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пеÑеклÑÑиÑÑÑÑ Ð½Ð° ÑÑÑ ÑолÑ, вÑполнив SET ROLE.
ÐÑÑибÑÑ INHERIT ÑÑÑанавливаеÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð² ÑелÑÑ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи: в пÑедÑдÑÑÐ¸Ñ Ð²ÑпÑÑÐºÐ°Ñ PostgreSQL полÑзоваÑели вÑегда обладали вÑеми пÑавами гÑÑпп, в коÑоÑÑе они бÑли вклÑÑенÑ. Ðднако NOINHERIT по ÑмÑÑÐ»Ñ Ð±Ð»Ð¸Ð¶Ðµ к ÑомÑ, ÑÑо опиÑано в ÑÑандаÑÑе SQL.
ÐÑдÑÑе оÑÑоÑÐ¾Ð¶Ð½Ñ Ñ Ð¿Ñавом CREATEROLE. Ðа Ñоли, ÑоздаваемÑе командой CREATEROLE, не ÑаÑпÑоÑÑÑанÑеÑÑÑ ÐºÐ¾Ð½ÑепÑÐ¸Ñ Ð½Ð°ÑледованиÑ. ÐÑо знаÑиÑ, ÑÑо даже еÑли ÑÐ¾Ð»Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð¾Ð¿ÑеделÑнного пÑава, но Ð¼Ð¾Ð¶ÐµÑ ÑоздаваÑÑ Ð´ÑÑгие Ñоли, она вполне ÑпоÑобна ÑоздаÑÑ Ð´ÑÑгÑÑ ÑÐ¾Ð»Ñ Ñ Ð¾ÑлиÑнÑм набоÑом пÑав (за иÑклÑÑением ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñолей Ñ Ð¿Ñавами ÑÑпеÑполÑзоваÑелÑ). ÐапÑимеÑ, еÑли ÑÐ¾Ð»Ñ "user" Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво CREATEROLE, но не CREATEDB, она, Ñем не менее, Ð¼Ð¾Ð¶ÐµÑ ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑÐ¾Ð»Ñ Ñ Ð¿Ñавом CREATEDB. ÐоÑÑÐ¾Ð¼Ñ ÑÐ¾Ð»Ñ Ñ Ð¿Ñавом CREATEROLE ÑледÑÐµÑ Ð²Ð¾ÑпÑинимаÑÑ ÐºÐ°Ðº ÑÐ¾Ð»Ñ Ð¿Ð¾ÑÑи ÑÑпеÑполÑзоваÑелÑ.
PostgreSQL вклÑÑÐ°ÐµÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ 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 оÑноÑÑÑÑÑ Ðº ÑаÑÑиÑениÑм PostgreSQL.
Ð ÑÑандаÑÑе SQL опÑеделÑÑÑÑÑ ÐºÐ¾Ð½ÑепÑии полÑзоваÑелей и Ñолей, но в нÑм они ÑаÑÑмаÑÑиваÑÑÑÑ ÐºÐ°Ðº оÑделÑнÑе ÑÑÑноÑÑи, а вÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей ÑÑиÑаÑÑÑÑ Ð²Ð½ÑÑÑенней ÑпеÑиÑикой СУÐÐ. Ð PostgreSQL Ð¼Ñ ÑеÑили обÑединиÑÑ Ð¿Ð¾Ð»ÑзоваÑелей и Ñоли в единÑÑ ÑÑÑноÑÑÑ, Ñак ÑÑо Ñоли полÑÑили дополниÑелÑнÑе аÑÑибÑÑÑ, не опиÑаннÑе в ÑÑандаÑÑе.
Ðоведение, наиболее близкое к опиÑÐ°Ð½Ð½Ð¾Ð¼Ñ Ð² ÑÑандаÑÑе SQL, можно полÑÑиÑÑ, еÑли ÑоздаваÑÑ Ð¿Ð¾Ð»ÑзоваÑелей Ñ Ð°ÑÑибÑÑом NOINHERIT, а Ñоли â Ñ Ð°ÑÑибÑÑом INHERIT.
| ÐÑед. | ÐаÑало | След. |
| CREATE OPERATOR FAMILY | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | CREATE RULE |