Se o usuário for root, você poderá usar a opção -c com su
su - postgres -c "<commands>"
Ou use sudo com -c
sudo -U postgres -c "<commands>" -s /bin/bash
Estou com um problema que espero que alguém possa me ajudar.
Estou escrevendo um script bash para configurar algum software, ou seja, nginx, postgres etc
Tudo está indo bem até agora, exceto quando eu for configurar o PostgreSQL
Eu preciso executar o seguinte comando:
psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
MAS eu preciso fazer isso através do sudo.
Meu comando completo é o seguinte:
sudo su - postgres psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
Quando eu executo isso, recebo o seguinte:
psql: CREATE: command not found
Mas se eu fizer o seguinte, funciona bem
sudo su - postgres
psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
Eu estou perdendo uma bandeira no meu comando sudo ou algo assim? .... Qualquer ajuda seria muito apreciada.
Tags bash postgresql linux centos