Программа createuser
, вероятно, устанавливает свое собственное соединение с терминалом, а не читает со своего стандартного ввода, это обычное поведение, когда речь идет о паролях.Вам, вероятно, повезет больше, если использовать SQL CREATE ROLE
вместо createuser
:
echo "CREATE ROLE postgres CREATEROLE CREATEDB SUPERUSER PASSWORD 'password';" \
| psql -h localhost -p 5432 databasename
Где «databasename» - это имя вашей базы данных.
Из тонкого руководства :
createuser является оболочкой для команды SQL CREATE ROLE.Нет эффективной разницы между созданием пользователей с помощью этой утилиты и других методов доступа к серверу.