postgres: оновити користувача, щоб бути суперусером?


643

Як я можу змінити існуючого користувача на постгрес, щоб він був суперпользователем? З різних причин я не хочу видаляти існуючого користувача.

# alter user myuser ...?

Відповіді:


1261
ALTER USER myuser WITH SUPERUSER;

Більше можна прочитати в Документації


157
зворотна операція ALTER USER myuser WITH NOSUPERUSER
d.raev

2
і як я можу виявити, якщо мійсер на даний момент є суперпопулярним?
masterweily

20
SELECT rolname, rolsuper FROM pg_roles;to @masterweily
caulfield

6
Я отримую: ПОМИЛКА: треба змінити суперусери
Степан Яковенко

15
@masterweily Ви можете зробити, \duщоб перелічити всіх користувачів / ролей.
XåpplI'-I0llwlg'I -

63

Щоб розширити вищезазначене та зробити короткий довідник:

  • Щоб зробити користувача SuperUser: ALTER USER username WITH SUPERUSER;
  • Щоб користувач більше не став SuperUser: ALTER USER username WITH NOSUPERUSER;
  • Щоб просто дозволити користувачеві створити базу даних: ALTER USER username CREATEDB;

Ви також можете використовувати CREATEROLEта CREATEUSERдозволити користувачеві привілеї, не роблячи їх суперпользователями.

Документація


27

$ su - postgres
$ psql
$ \du;для того, щоб побачити користувача в db,
виберіть користувача, який ви хочете, щоб він був надрукованим і:
$ ALTER USER "user" with superuser;


у цьому конкретному випадку вам потрібно ALTER USER "user" WITH SUPERUSER;
вписати

9

Запустіть цю команду

alter user myuser with superuser;

Якщо ви хочете побачити дозвіл користувача, виконайте наступну команду

\du

8

Можливо, інколи модернізація до суперпользователя може бути не надто корисним варіантом. Тож крім суперкористувача існує багато інших варіантів, якими ви можете скористатися. Відкрийте свій термінал і введіть наступне:

$ sudo su - postgres
[sudo] password for user: (type your password here)
$ psql
postgres@user:~$ psql
psql (10.5 (Ubuntu 10.5-1.pgdg18.04+1))
Type "help" for help.

postgres=# ALTER USER my_user WITH option

Також перелік списку варіантів

SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB  | CREATEROLE | NOCREATEROLE |
CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION|
NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMIT connlimit | 
[ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp'

Так у командному рядку це буде виглядати

postgres=# ALTER USER my_user WITH  LOGIN

АБО використовуйте зашифрований пароль.

postgres=# ALTER USER my_user  WITH ENCRYPTED PASSWORD '5d41402abc4b2a76b9719d911017c592';

АБО відкликати дозволи через певний час.

postgres=# ALTER USER my_user  WITH VALID UNTIL '2019-12-29 19:09:00';

4

Ви можете створити SUPERUSERабо просувати USER, відповідно до вашого випадку

$ sudo -u postgres psql -c "ALTER USER myuser WITH SUPERUSER;"

або відкат

$ sudo -u postgres psql -c "ALTER USER myuser WITH NOSUPERUSER;"

Щоб уникнути реєстрації команди під час встановлення пароля, вставіть перед нею пробіл, але переконайтеся, що ваша система підтримує цю опцію.

$  sudo -u postgres psql -c "CREATE USER my_user WITH PASSWORD 'my_pass';"
$  sudo -u postgres psql -c "CREATE USER my_user WITH SUPERUSER PASSWORD 'my_pass';"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.