Estou tentando configurar o Postgres pela primeira vez e preciso criar um usuário com permissões para ler e criar bancos de dados. No entanto, quando eu uso:
createuser username
no meu terminal, recebo a seguinte mensagem:
createuser: não foi possível conectar ao banco de dados postgres: FATAL: o papel "tom" não existe
Tom é a minha conta de usuário do Ubuntu na qual estou conectado agora. Estou tentando criar um nome de usuário "postgres" e fazer um psql -U psql template1
para que eu possa criar um banco de dados e atribuir um proprietário a ele para meu aplicativo Rails.
database
postgresql
Tom Maxwell
fonte
fonte
Respostas:
Você mencionou o Ubuntu, então suponho que você instalou os pacotes PostgreSQL do Ubuntu através do apt.
Nesse caso, a
postgres
conta do usuário PostgreSQL já existe e está configurada para ser acessível por meio depeer
autenticação para sockets unix empg_hba.conf
. Você consegue isso executando comandos como opostgres
usuário unix, por exemplo:Tudo isso está na documentação do Ubuntu PostgreSQL , que é o primeiro hit do Google para "Ubuntu PostgreSQL" e é abordada em várias perguntas sobre Stack Overflow.
(Você tornou esta pergunta muito mais difícil de responder, omitindo detalhes como o sistema operacional e a versão em que está, como instalou o PostgreSQL, etc.)
fonte
pg_hba.conf
para usar amd5
autenticação desse usuário (consulte o manual); (b) Criar um usuário do sistema operacional com o mesmo nome e continuar usandopeer
auth; ou (c) mais avançado, crie umpg_ident.conf
mapeamento para permitir que o usuário do sistema operacional efetue login como o novo usuário.Veja git gist com instruções aqui
Rode isto:
OU
no seu terminal para entrar no postgres
Corre
Nota: Substitua new_username pelo usuário que você deseja criar, no seu caso será tom.
Já que você deseja que o usuário seja capaz de criar um banco de dados, você precisa alterar a função para superusuário
Para confirmar, tudo deu certo,
Atualização / modificação (para Mac):
Recentemente, encontrei um erro semelhante no meu Mac:
psql: FATAL: role "postgres" does not exist
Isso ocorreu porque minha instalação foi configurada com um superusuário do banco de dados cujo nome de função é igual ao seu nome de login (abreviado).
Mas alguns scripts do Linux assumem que o superusuário tem o nome de função tradicional de
postgres
Como resolvi isso?
Se você instalou com
homebrew
run:/usr/local/opt/postgres/bin/createuser -s postgres
/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres
OU:
/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username
OU:
/usr/local/opt/postgresql@11/bin/createuser -s postgres
/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres
PS: substitua 10.5 pela sua versão PostgreSQL
fonte
psql -U postgres
isso deve ajudá-lo, pois isso acontecerá se o administrador não tiver criado uma conta de usuário do PostgreSQL para você. Também pode ser que você tenha atribuído um nome de usuário PostgreSQL diferente do nome de usuário do sistema operacional; nesse caso, você precisa usar a opção -U.
fonte
1- Faça login como usuário PostgreSQL padrão (postgres)
2- Como usuário postgres. Adicione um novo usuário do banco de dados usando o
createuser
comando3 saídas
fonte
Seu erro está postado na documentação oficial. Você pode ler este artigo .
Copiei o motivo para você (e criei um hiperlink para os URLs) desse artigo:
Para seus propósitos, você pode fazer:
1) Crie uma conta de usuário PostgreSQL:
(a
-P
opção de definir uma senha; a-d
opção de permitir a criação de um banco de dados para seu nome de usuário 'tom'. Observe que 'tom' é o nome de usuário do seu sistema operacional. Dessa forma, você pode executar comandos PostgreSQL sem precisarsudo
.)2) Agora você deve ser capaz de executar
createdb
e outros comandos PostgreSQL.fonte
Eu tive o mesmo problema, acabei de fazer isso
sudo su - postgres
createuser odoo -U postgres -dRSP #P para senha ( odoo ou nome de usuário que você deseja dar acesso ao postgres)
fonte
No Windows, use:
C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>
Adicione
--superuser
ou--createdb
conforme apropriado.Consulte https://www.postgresql.org/docs/current/static/app-createuser.html para mais opções.
fonte
Você precisa primeiro executar o initdb. Ele criará o cluster de banco de dados e a configuração inicial
Veja Como configurar o postgresql pela primeira vez? e http://www.postgresql.org/docs/8.4/static/app-initdb.html
fonte
initdb
, não teria um servidor de banco de dados funcionando e aceitando conexões para produzir a mensagem de erro relatada. Remova esta resposta enganosa. (A propósito, no futuro, acesse / docs / current / static / para evitar o acúmulo de links obsoletos)