Estou com um problema no meu banco de dados. Instalei o PostgreSQL 9.5 no meu servidor Ubuntu. Alterei o arquivo postgresql.conf para permitir vincular o servidor PostgreSQL ao localhost. Isso me permite executar o pgAdmin e conectar ao meu banco de dados encaminhando também a porta 5432, onde executo meu PostgreSQL.
O problema que estou enfrentando é que só vejo a tabela padrão 'postgres', mas não minha recém-criada 'jogos'. Criei esta tabela rodando postgres=# create database games;
com o usuário postgres conectado ao servidor. Eu sei que o banco de dados foi criado, porque se eu executar postgres=# \l+
enquanto estiver conectado ao servidor, recebo uma lista de bancos de dados, incluindo meus 'jogos'.
Na segunda foto está minha captura de tela do aplicativo pgAdmin 9.5 com todos os valores de propriedade que uso para conectar ao meu servidor. Então eu consigo me conectar ao servidor, mas não consigo ver o banco de dados 'jogos'.
Também dei um passo adiante e concedi todas as permissões ao usuário postgres executando postgres=# grant all privileges on database games to postgres;
. Você pode ver na minha terceira captura de tela que os privilégios de acesso foram alterados. Mas essa mudança não me ajudou a resolver o problema. Ainda não consigo ver 'jogos' no pgAdmin. Eu vi que alguém teve um problema semelhante e executei o clique direito no servidor e cliquei em 'Novo banco de dados'.
Isso pareceu criar um novo banco de dados, porque como você pode ver no pgAdmin, o aplicativo foi capaz de encontrar a tabela de pontuação que criei dentro do pgAdmin. A razão pela qual acredito que seja esse o caso é porque executar o mesmo SQL conectado ao servidor games=# select * from score; resulta em ERRO: a relação "pontuação" não existe LINHA 1: selecione * da pontuação;.
Quaisquer outras idéias onde eu errei. Gostaria de receber qualquer ajuda que eu possa obter.
Eu posso entrar no meu banco de dados. Quando eu executar psql games postgres
, isso me conectará ao meu banco de dados de jogos com o usuário postgres. E também foi assim que loguei e executei a instrução select:
games=# select * from score;
ERRO: a relação "pontuação" não existe LINHA 1: selecione * da pontuação;
Dei um passo adiante e imprimi as tabelas que temos em 'jogos':
games=# \dt
Nenhuma relação encontrada.
Consegui encontrar os problemas.
Uma delas era que eu tinha um servidor PostgreSQL instalado em minha máquina que eu desconhecia. Parece que o instalei com minha instalação do pgAdmin. Portanto, toda vez que me conectava ao meu servidor, estabelecia uma conexão com meu servidor localhost e não com meu servidor remoto. Acabei de desinstalar o servidor e instalei apenas o cliente pgAdmin.
O segundo problema que tive foi que o arquivo
/etc/postgresql/9.5/main/pg_hba.conf
teve que ser alterado. Então eu corri:e mudou a linha
para
Depois que isso foi alterado, fiz dois reiniciarem a configuração executando:
Também gostaria de salientar que é importante ter o usuário postgres como um usuário unix e DB com as mesmas senhas. Encontrei todas essas informações aqui .
Você pode entrar em seu banco de dados de jogos usando o psql?
O que posso ver é que a primeira imagem mostra você se conectando a localhost:5432, a segunda (a conexão psql), você está se conectando a jkalancic@vps73162 - no que parece ser uma sessão telnet - você tem certeza de que está olhando para o mesmo banco de dados na mesma máquina?
[Seguindo a resposta do OP]
Uma dica para a próxima vez - você pode instalar a partir da fonte e não mexer com /etc/postgresql - você nunca pode ter certeza absoluta de que não está misturando clientes, servidores e portas, a menos que faça isso. Eu faço isso o tempo todo para instalações - no Linux e vejo que você está no Ubuntu, então deve ser fácil.
O PostgreSQL é realmente excelente para esse tipo de coisa. Funciona direto na primeira vez - e você pode adaptar seu prompt para apontar para suas várias instalações - certifique-se de desligar (em seu script de inicialização) se quiser colocar mais de um servidor na porta 5432.