7
respostas

[Dúvida] Não consigo usar o comando: sudo -u postgres psql ou o psql -U postgres

Não estou conseguindo usar o comando sudo -u postgres psql ou o psql -U postgres. Como posso ativar o psql para criar o banco de dados?

7 respostas

Olá Roberth! Tudo bem?

Parece que você está enfrentando dificuldades para acessar o shell do PostgreSQL usando os comandos sudo -u postgres psql ou psql -U postgres. Vamos tentar resolver isso juntos!

Aqui estão algumas sugestões que podem te ajudar:

  1. Verifique se o PostgreSQL está instalado e em execução: Certifique-se de que o PostgreSQL está instalado no seu sistema e que o serviço está ativo. Você pode verificar o status do serviço com o comando:

    sudo service postgresql status
    

    Se não estiver em execução, você pode iniciá-lo com:

    sudo service postgresql start
    
  2. Usuário e permissões: O comando sudo -u postgres psql é usado para acessar o shell do PostgreSQL como o usuário postgres. Se estiver tendo problemas, certifique-se de que você tem permissões de sudo no seu sistema.

  3. Senha do usuário postgres: Se você estiver usando o comando psql -U postgres, ele pode estar solicitando uma senha. Certifique-se de que você sabe a senha correta do usuário postgres. Caso contrário, você pode redefinir a senha usando o seguinte comando:

    sudo -u postgres psql
    

    E, em seguida, no shell do PostgreSQL:

    ALTER USER postgres WITH PASSWORD 'nova_senha';
    
  4. Verifique o caminho do psql: Às vezes, o caminho do executável psql pode não estar no seu PATH. Você pode tentar acessar o psql usando o caminho completo, como /usr/bin/psql.

  5. Erros específicos: Se houver mensagens de erro específicas ao tentar executar os comandos, compartilhe-as, pois elas podem fornecer pistas adicionais sobre o que pode estar errado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Aparece a seguinte mensagem no terminal:

input: sudo service postgresql status
output: Comando não encontrado

O meu SO é o Windows, os comando do instrutror são para o Linux? Seria esse o problema?

  • Baixar o PostegreSQL para desktop, deixar ele aberto.

  • Abrir o prompt de comando windows e entrar com o comando:
    cd "C:\Program Files\PostgreSQL\<versão>\bin"
    Atenção ao número da versão do PostgreSQL baixado, e substituir o número no código acima.

  • Após chegar ao endereço acima, entrar com o comando:
    psql -U postgres

  • Agora é seguir com as instruções do curso:

  1. Criar o banco de dados
  2. Alterar usuário e senha
  • Rodar Uvicorn no terminal VSC

Agora estou com problemas ao rodar o uvicorn, com o erro:

\__init__.py", line 135, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 78: invalid continuation byte

Tentei o client_encoding='utf8' no database.py:
engine = create_engine(DATABASE_URL, client_encoding='utf8')

Achei que fosse só um erro de decode, mas tô completamente perdido e nem o docs do FastAPI consigo verificar.

Oi, Roberth!

O erro de UnicodeDecodeError acontece quando a string de conexão com o PostgreSQL contém caracteres especiais (como ç, acentos ou espaços) e o driver não consegue decodificar corretamente no Windows.

Resolva fazendo o seguinte, de forma direta:

  1. Abra o arquivo onde está a variável DATABASE_URL (normalmente database.py ou .env).

  2. Evite qualquer caractere especial na senha do banco.
    Use apenas letras e números temporariamente.

Exemplo correto de string de conexão:


DATABASE_URL = "postgresql+psycopg2://postgres:senha123@localhost:5432/nome_do_banco"
  1. Remova completamente o parâmetro client_encoding, ele não resolve esse erro no Windows com psycopg2.

  2. Certifique-se de que o arquivo está salvo em UTF-8:

    • No VS Code: canto inferior direito → UTF-8 → Salvar com codificação UTF-8.
  3. Reinicie o terminal e rode novamente o Uvicorn:


uvicorn main:app --reload

Pontos importantes:

  • Esse erro acontece quando a senha ou o caminho contém caracteres fora do padrão ASCII.
  • No Windows, o psycopg2 é sensível a isso durante a leitura da URL.
  • Depois que tudo funcionar, você pode ajustar a senha novamente se quiser.

Fico à disposição.

A codificação UTF-8 já estava configurada. Não tinha nehum caractere especial na URL, mesmo deixando do jeito que informou. Consegui corrigir somente quando instalei o pg8000.

Agora estou com erro:

psql: error: connection to server at "localhost" (::1), port 5432 failed: FATAL: autenticação do tipo senha falhou para o usuário "postgres"

*coloquei o mesmo usuário e senha que o instrutor.
user: postgres | password: postgres

Fala, Roberth!

O erro FATAL: autenticação do tipo senha falhou para o usuário "postgres" acontece quando a senha configurada no PostgreSQL não é a mesma que você está usando na conexão. No Windows, isso é comum porque a senha do usuário postgres é definida no momento da instalação, e não vem como postgres por padrão.

Resolva fazendo o seguinte, de forma direta:

  1. Altere a senha do usuário postgres no próprio PostgreSQL
    Abra o prompt de comando do Windows como administrador, navegue até a pasta bin do PostgreSQL e acesse o banco:

    
     cd "C:\Program Files\PostgreSQL\15\bin"
     psql -U postgres
     

    Digite a senha que você definiu na instalação.

  2. Redefina a senha do usuário postgres
    No terminal do psql, execute:

    
     ALTER USER postgres WITH PASSWORD 'postgres';
     

    Isso garante que o usuário postgres tenha realmente a senha postgres.

  3. Ajuste a string de conexão da API
    No seu projeto, deixe a URL exatamente assim:

    
     DATABASE_URL = "postgresql+pg8000://postgres:postgres@localhost:5432/nome_do_banco"
     

Pontos importantes:

  • O erro não está no FastAPI.
  • O problema aqui é credencial do PostgreSQL diferente da esperada.
  • O usuário do instrutor só funciona se a senha local for igual.

Fico à disposição.