PostgreSQL `createuser` без указания имени пользователя - PullRequest
0 голосов
/ 28 сентября 2018

Я запустил:

$ createuser --pwprompt

и увидел:

Enter password for new role: 

Я ожидал, что мне будет предложено ввести имя пользователя, поэтому в этот момент я нажал CTRL + C .

В синопсисе man написано, что имя пользователя необязательно:

createuser [connection-option...] [option...] [username]

Единственная другая информация, указанная здесь:

username

Указывает имя создаваемого пользователя PostgreSQL.Это имя должно отличаться от всех существующих ролей в этой установке PostgreSQL.

На какого пользователя работает createuser, если ни одна не указана?

1 Ответ

0 голосов
/ 28 сентября 2018

Вам не удалось прочитать эту часть документации (это заняло у меня некоторое время):

--interactive

Запрашивать имя пользователя, если ни один не указан накомандной строки, а также запрашивает, какой из параметров -d / -D, -r / -R, -s / -S не указан в командной строке.(Это было поведение по умолчанию до PostgreSQL 9.1.)

Вы не указали --interactive, поэтому вам не предлагается.

В результате PostgreSQL выбирает пользователя по умолчанию: если не установлен PGUSER, то есть пользователь вашей операционной системы.

Итак, предполагая, что вы пользователь операционной системы postgres, вы фактически сделали следующее:

createuser -U postgres postgres

, чтоконечно глупо и привело бы к

createuser: creation of new role failed: ERROR:  role "postgres" already exists

, если бы вы не скушались и не прервали казнь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...