У меня небольшая проблема, я надеюсь, что кто-то может мне помочь.
Я пишу сценарий bash для установки некоторого программного обеспечения, например nginx, postgres и т. Д.
Пока все идет хорошо, за исключением того, когда я приступаю к настройке PostgreSQL
Мне нужно выполнить следующую команду;
psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
НО мне нужно сделать это через sudo.
Моя полная команда такова:
sudo su - postgres psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
Когда я запускаю это, я получаю следующее:
psql: CREATE: command not found
Но если я сделаю следующее, все будет нормально
sudo su - postgres
psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
Мне не хватает флага в моей команде sudo или что-то в этом роде? .... Любая помощь будет принята с благодарностью.
Если пользователь root, вы можете использовать -c вариант с вс
su - postgres -c "<commands>"
Или используйте судо с участием -c
sudo -U postgres -c "<commands>" -s /bin/bash