postgres: обновить пользователя, чтобы стать суперпользователем?


644

В postgres, как мне изменить существующего пользователя на суперпользователя? Я не хочу удалять существующего пользователя по разным причинам.

# alter user myuser ...?

Ответы:


1262
ALTER USER myuser WITH SUPERUSER;

Вы можете прочитать больше в документации


157
противоположная операция ALTER USER myuser WITH NOSUPERUSER
д.раев

2
и как я могу определить, является ли myuser суперпользователем в настоящее время?
masterweily

20
SELECT rolname, rolsuper FROM pg_roles;@masterweily
Колфилд

6
Я получаю: ОШИБКА: должен быть суперпользователем, чтобы изменить суперпользователей
Степан Яковенко

15
@masterweily Вы можете сделать \duсписок всех пользователей / ролей.
XåpplI'-I0llwlg'I -

63

Чтобы расширить вышесказанное и сделать быструю ссылку:

  • Чтобы сделать пользователя суперпользователем: ALTER USER username WITH SUPERUSER;
  • Чтобы сделать пользователя больше не суперпользователем: ALTER USER username WITH NOSUPERUSER;
  • Чтобы просто позволить пользователю создать базу данных: ALTER USER username CREATEDB;

Вы также можете использовать CREATEROLEи CREATEUSERразрешить пользователю привилегии, не делая их суперпользователем.

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


27

$ su - postgres
$ psql
$, \du;чтобы увидеть пользователя на БД,
выберите пользователя, который вы хотите быть суперпользователем и:
$ 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.