PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да промените потребител на суперпотребител в PostgreSQL

  • Създаване на нов потребител
  • Преглед на съществуващи потребителски разрешения
  • Промяна на съществуващи потребителски разрешения
    • Присвояване на 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 | {}

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pg_ctl Съвети и трикове

  2. Грешка при инсталиране на psycopg2==2.6.2

  3. Как да конвертирам първичен ключ от цяло число в сериен?

  4. извършване на операции, свързани с дата и час в PHP

  5. Как да тествам моя ad-hoc SQL с параметри в прозореца за заявка на Postgres