Não há diferença real entre os dois métodos. As funções de usuário / login e as senhas são armazenadas em todo o servidor e não em todo o banco de dados. Em outras palavras, a senha é para se conectar ao servidor, portanto, não importa qual banco de dados você se conecta. O comando
sudo -u postgres psql template1
(Agradecimentos a Daniel Vérité pelo comentário)
em efeito informa ao sistema para alternar para o usuário postgres e executar o cliente CLI (psql) para se conectar ao servidor e usar o banco de dados "template1". Se nenhum nome de usuário e / ou banco de dados for especificado, o psql tentará se conectar como usuário atual e "usar" um banco de dados com o mesmo nome do usuário atual (postgres neste caso - o que torna o parâmetro "template" supérfluo)
Isto é o que o comando acima está fazendo passo a passo:
sudo -u postgres
Isso alterna para o usuário postgres. Observe a ausência do parâmetro -p do sudo. Isto é essencial, porque o "os usuário postgres" (que não tem senha e seu único propósito é possuir os processos do servidor em execução) é diferente de "usuário de banco de dados postgres" (quem é o usuário raiz do banco de dados ou precisa de uma senha.)
psql --username=postgres --database=template1
Isso se conecta ao localhost usando o banco de dados username postgres e o banco de dados template1.
Para o seu propósito, esta linha pode ser abreviada para
sudo -u postgres psql
ALTER USER postgres with encrypted password 'your_password';
Isso mudará para o usuário postgres e se conectará ao host local como usuário postgres no banco de dados chamado postgres e, em seguida, definirá a senha.
Se você precisar de mais esclarecimentos, pergunte. Ficarei feliz em ajudar.
Uma breve nota sobre bancos de dados de modelos . Ao criar um novo banco de dados, o postgres usa um modelo chamado template1
. Isso é algo como o arquivo de esqueleto usado para definir o padrão do usuário ao criar contas de usuário no linux. Geralmente é modificado pelo dba para garantir que determinadas ferramentas e comportamentos sejam aplicados em todo o servidor. Mas por que 1
você pode perguntar. Bem, existe outro banco de dados de modelos chamado template0
e é uma cópia protegida de "limpo ardósia" de template1
apenas no caso de algo ir para o sul com ele. Aqui é uma página wiki descrevendo tal cenário.