LINUX.ORG.RU

Postgres - как указать юзера для запуска?

 , ,


0

1

Управляет постгресом команда pg_ctl. Пользователя указать - флаг -U. Но как ни пытался, все равно принимает за пользователя вызывателя команды. Я честно долго пытался и гуглил.

pg_ctl -w -o "-k $PG" -D "$DATA" start -U postgres
pg_ctl -U postgres -w -o "-k $PG" -D "$DATA" start
pg_ctl -w -o "-U postgres -k $PG" -D "$DATA" start
Дело происходит на heroku (Ubuntu 14.04), где нельзя вызвать su. Выдает «FATAL: role „u56407“ does not exist», где u56407 - текущий пользователь оболочки, каждую мою попытку разный. Капец с этим, с сотнями ошибок во время установки как-то справился, а тут ступор, помогите!



Последнее исправление: Romaboy (всего исправлений: 1)

Иными словами: если передать в pg_ctl флаг -U, то на вызываемую им команду «postgres» это никак не влияет, а если передать через pg_ctl флаг -U в «postgres» с помощью -o, то «Try „postgres --help“ for more information.», потому что сама утилита postgres такого флага не принимает. То есть она его вообще не принимает. Ок, значит с флагами в этом случае бесполезно. Как можно быть?

Romaboy
() автор топика

Дело происходит на heroku (Ubuntu 14.04), где нельзя вызвать su.

А что насчёт

sudo -u postgres -i
?

Wizard_ ★★★★★
()
Ответ на: комментарий от Wizard_

Тем более конечно. Неужели пг не рассчитан на простых смертных?

Romaboy
() автор топика

-U параметр - это только в windows работает. И вообще... нефиг одному пользователя что-то запускать от имени другого без специального на то разрешения. Так что sudo ваше все.

gvtlor
()

Ты пытаешься выполнить команду от пользователя, к которому у тебя нет доступа?
И да, опция -U существует только для винды.

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

Ну как это к пользователю, к которому нет доступа? Пользователь postgres - встроенный пользователь в базу. До того, как её скачал-установил, этого пользователя не было, следовательно, он создался из-под моего пользователя. Но у меня есть идейка как это провернуть, попробую-отпишусь.

Romaboy
() автор топика
Ответ на: комментарий от AnDoR

И не правда, в почти всех утилитах постгреса в --help есть -U, не будут они для винды эксклюзивные фичи делать. Самое замечательное, что initdb поддерживает -U, который задает суперпользователя вместо postgres, это решит проблему.

Romaboy
() автор топика
Ответ на: комментарий от Romaboy

Ничего не получается! При разворачивании билдпака я Вася, initdb, pg_ctl start && создание бд и миграция && pg_ctl stop действуют для Васи, а потом при запуске приложения я Петя, и ошибка что пользователь Петя не найден. Помогите пожалуйста, должен быть выход

Romaboy
() автор топика
Ответ на: комментарий от Romaboy

-U username
User name for the user to start the service. For domain users, use the format DOMAIN\username.

В остальных утилитах эта опция задаёт пользователя бд, а не системного пользователя.

AnDoR ★★★★★
()

Правильный и при этом самый простой вариант: переменная окружения PGUSER, в ней можно поставить postgres, который автоматически создастся при initdb, и дальше никаки проблем! Ура! Хероку с её ограниченным плагином pg теперь нервно курит в сторонке.

Romaboy
() автор топика
Ответ на: комментарий от Romaboy

Ну-ка, ну-ка, пожалуйста, по-подробнее... что-то я не уловил в этом сообщении, где тут запуск Пети от имени Васи.

gvtlor
()
Ответ на: комментарий от gvtlor

При разворачивании билдпака юзера зовут u421546, а после успешной установки запускает базу u521682, PGUSER единственный способ, который я долго искал, чтобы использовать одно имя по желанию своему.

Romaboy
() автор топика
Ответ на: комментарий от Romaboy

Что-то я крепко сомневаюсь... хотя бы по той причине, что когда пользователь делает initdb, то директория с данными кластера создается от его имени и потом другому является недоступной. Я же не знаю, что они там наворотили в облаке с этими билдпаками, может эта и фича, но в стандартных необлачных средах такое не прокатит. И PGUSER тоже не причем, эта переменная вообще используется для клиентских коннектов.

gvtlor
()
Ответ на: комментарий от gvtlor

Установка происходит в папку уже не помню, но назовем её /tmp/build/12hj1hbf, и наверняка это отдельный образ убунты. И если баш скрипт ответил 0, то хероку все из этой папки перемещает в /app, при этом меняя права на нового пользователя. А PGUSER очень сильно причем, через флаги пользователя указать никак не получалось, а с этой переменной все получилось.

Romaboy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.