- Създаване на нов потребител
- Преглед на съществуващи потребителски разрешения
- Промяна на съществуващи потребителски разрешения
- Присвояване на
SUPERUSER
Разрешение - Отмяна на разрешения
- Присвояване на
Промяната на потребителските разрешения в PostgreSQL може да варира от доста прости до изключително сложни, в зависимост от разрешителната детайлност, която всъщност се изисква. В повечето случаи обаче това е мощният ALTER USER
команда, която трябва да се използва, за да направи всичко - от разрешаване на потребителите да влизат, да създават бази данни, да управляват роли и дори да стават SUPERUSER
акаунт.
Ще разгледаме накратко силата на ALTER USER
команда, така че можете лесно да изпълнявате различни присвоявания на разрешения и премахвания, когато възникне необходимост.
Създаване на нов потребител
Преди да се заемем спромяната потребителски разрешения, трябва да създадем нов потребителски акаунт (обикновено наричан ROLE
) да се забъркваш с.
За начало ще изброим всички съществуващи потребители:
=# SELECT usename FROM pg_user;
usename
----------
postgres
(1 row)
По подразбиране postgres
обикновено е единственият съществуващ потребител, така че искаме да създадем нов потребител на librarian
за да контролирате нашата library
база данни. Това може да се постигне с помощта на CREATE USER
команда:
=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
usename
-----------
postgres
librarian
(2 rows)
Преглед на съществуващи потребителски разрешения
Често може да бъде полезно да проверите съществуващите разрешения, присвоени на потребителите в системата. Това може лесно да се постигне с \du
команда от psql
подкана:
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Можем ясно да видим това, въпреки че вече добавихме нов librarian
потребител, трябва да му зададем някои разрешения.
Промяна на съществуващи потребителски разрешения
Сега, когато нашият librarian
потребител съществува, можем да започнем да използваме ALTER USER
за да промените разрешенията, предоставени на librarian
.
Основният формат на ALTER USER
включва името на потребителя (или ROLE
), последвано от поредица от options
да информира PostgreSQL кои разрешителни промени да направи:
=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;
Тези опции варират от CREATEDB
, CREATEROLE
, CREATEUSER
и дори SUPERUSER
. Освен това повечето опции имат и отрицателен аналог, който информира системата, че искате да откажете на потребителя това конкретно разрешение. Тези имена на опции са същите като техния аналог на присвояване, но са с префикс с NO
(напр. NOCREATEDB
, NOCREATEROLE
, NOSUPERUSER
).
Присвояване на SUPERUSER
Разрешение
Сега, когато разбираме основите на създаването на потребители и използването на ALTER USER
за да променим разрешенията, можем просто да използваме SUPERUSER
опция за назначаване на нашия librarian
потребител SUPERUSER
разрешение:
=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE
Разбира се, ако покажем нашия списък с разрешения сега, ще видим librarian
има новия SUPERUSER
разрешение, което искаме:
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | Superuser | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Отмяна на разрешения
В случай, че направим грешка и зададем разрешение, което по-късно искаме да отменим, просто издадете същото ALTER USER
команда, но добавете NO
префикс пред разрешителните опции, които трябва да бъдат отменени.
Например, можем да премахнем SUPERUSER
от нашия librarian
потребител като така:
=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}