Os instaladores do Postgres gentilmente cedidos à comunidade pelo EnterpriseDB.com criam uma postgres
conta de usuário no macOS como é comum.
Em uma sessão de console em Terminal.app , preciso alternar para esse usuário. Meu objetivo é executar um editor de texto com os privilégios desse usuário para que eu possa editar o pg_hba.conf
arquivo que controla as regras de autenticação de usuário do Postgres.
Quando eu tento:
su - postgres
…Sou solicitada a senha do usuário, que digito com sucesso, mas recebo a mensagem de erro:
su: Desculpe
Tenho certeza que a senha está correta. O que posso fazer para acessar o postgres
usuário?
sudo su postgres
Tendo encontrado esta pergunta fechada no Stack Overflow e sua duplicata , postarei aqui as soluções encontradas ali e ali .
➥ Você deve usar o
sudo
comando combinado com osu
comando.Quando solicitado, digite sua senha de usuário administrador do macOS em vez
postgres
da senha do usuário. Neste momento, o usuário administrador do Mac é quem executa osudo
comando, não opostgres
usuário.Embora eu não entenda por que devemos combinar o
sudo
com osu
, ele realmente funciona para mim no macOS Mojave . Não encontrei essa dica entre meus vários esforços de pesquisa relacionados a BSD e Linux, então talvez seja uma coisa da Apple apenas para Mac, talvez uma medida extra de segurança. Ou talvez nos sistemas operacionais do estilo Unix, osu
comando deve ser executado peloroot
usuário e, no macOS, aroot
conta é desativada por padrão para fins de segurança - nossa conta de usuário de administrador do Mac é menos poderosa queroot
, e pode não ser autorizada por padrão para executarsu
? Não sei, não me importo, a solução alternativa funciona.Alternativa moderna:
sudo -u
Segundo Craig Ringer e Erwin Brandstetter , a forma mais moderna é:
De acordo com esta página :
-u
significa “executar um comando especificado como este usuário especificado”.postgres
está especificando o nome de usuário sob o qual queremos executar o comando.-i
simula um login inicial, o que significa que o shell será inicializado executando os scripts de inicialização desse usuário.Para obter mais discussões sobre as abordagens mais antigas e mais recentes, consulte esta pergunta no site irmão, Qual é a diferença entre sudo su - postgres e sudo -u postgres? . A resposta de Craig Ringer aconselha: (a) Esqueça
sudo su
e (b) usesudo -u
em vez disso.Executar aplicativos como
postgres
usuárioPara executar uma
psql
sessão comopostgres
usuário:Para executar o aplicativo editor de texto como usuário:
nano
postgres
O instalador do EBD pede uma senha durante a instalação, mas é para o usuário do banco de dados, não para o
postgres
usuário Unix, que não tem senha.Isso é mencionado em Postgres, Passwords and Installers no site EDB. Citar:
A explicação mais plausível para
su - postgres
não funcionar é que você está confundindo a senha do banco de dados com a senha do sistema operacional.Para tornar
su - postgres
utilizável, a senha do SO precisaria ser definida primeiro, o que poderia ser feito com:Isso também é verdade para o PostgreSQL empacotado em distribuições Linux. De fato, os pacotes PostgreSQL para Linux vão um passo além e não pedem senha para o superusuário do banco de dados, o que permite uma instalação totalmente automatizada. Assim como a senha do SO não é necessária se
sudo
for sempre usada, uma senha do banco de dados não é necessária se apenas opeer
método de autenticação padrão for usado pelopostgres
usuário.