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

644

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

# alter user myuser ...?
flossfan
источник

Ответы:

1262
ALTER USER myuser WITH SUPERUSER;

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

Quassnoi
источник
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разрешить пользователю привилегии, не делая их суперпользователем.

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

ZZ9
источник
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';"
Василий Суриков
источник