Como faço o login e autentico o Postgresql após uma nova instalação?
psql: FATAL: Ident authentication failed for user "my-ubuntu-username"
5 answers
Há dois métodos que pode usar. Ambos requerem a criação de um utilizador e uma base de dados.
-
Utilizar createuser e createdb,
$ sudo -u postgres createuser -s $USER $ createdb mydatabase $ psql -d mydatabase
-
Usando os comandos de administração SQL, e conectando-se com uma senha sobre TCP
$ sudo -u postgres psql postgres
E depois na concha psql
CREATE ROLE myuser LOGIN PASSWORD 'mypass'; CREATE DATABASE mydatabase WITH OWNER = myuser;
Depois podes entrar,
$ psql -h localhost -d mydatabase -U myuser -p <port>
Se você não conhece o porto, você pode sempre obtê-lo executando o seguinte, como o
postgres
utilizador,SHOW port;
Ou
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
Nota lateral: o utilizadorpostgres
Sugiro Não modificar o utilizadorpostgres
.
-
Normalmente está trancada do so. Ninguém deveria "entrar" no sistema operacional como
postgres
. É suposto ter raiz para se autenticar como postgres
.
Normalmente não é protegido por senha e delega no sistema operativo anfitrião. Isto é uma coisa boa. Isto significa normalmente para registar em as postgres
, que é o equivalente PostgreSQL do servidor SQL SA
, Você tem que ter acesso de escrita aos arquivos de dados subjacentes. E, isso significa que normalmente podes destruir o caos de qualquer maneira.
Ao manter isto desactivado, elimina-se o risco de um ataque de Força bruta através de um super-utilizador. Esconder e esconder o nome do super-utilizador tem vantagens.
Por omissão, teria de usar o utilizador do postgres:
sudo -u postgres psql postgres
O erro que está a obter é porque o seu nome de utilizador-ubuntu não é um utilizador de Postgres válido.
Tem de dizer ao psql qual o nome de Utilizador da base de dados a usar
psql -U postgres
Você também pode precisar de especificar a base de dados para se ligar a
psql -U postgres -d <dbname>
Se o seu cliente de base de dados se ligar ao TCP/IP e tiver o ident auth configurado no seu pg_hba.conf verifique se tem um identd instalado e em execução. Isto é obrigatório mesmo que você tenha apenas clientes locais conectando-se a"localhost".
Também tenha cuidado para que hoje em dia o identd possa ter que ser IPv6 habilitado para o Postgresql receber clientes que se ligam ao localhost.
Também pode ligar-se à base de dados como utilizador "normal" (não postgres):
postgres=# \connect opensim Opensim_Tester localhost;
Password for user Opensim_Tester:
You are now connected to database "opensim" as user "Opensim_Tester" on host "localhost" at port "5432"