Acabei de instalar o postgres 8.4 no Ubuntu 9.10 e ele nunca me pediu para criar um superusuário. Existe um superusuário padrão e sua senha? Caso contrário, como crio um novo?
Acabei de instalar o postgres 8.4 no Ubuntu 9.10 e ele nunca me pediu para criar um superusuário. Existe um superusuário padrão e sua senha? Caso contrário, como crio um novo?
Respostas:
CUIDADO A resposta sobre como alterar a senha do UNIX para "postgres" por "$ sudo passwd postgres" não é a preferida e pode até ser PERIGOSA !
É por isso que: Por padrão, a conta UNIX "postgres" está bloqueada, o que significa que não pode ser logada usando uma senha. Se você usar "sudo passwd postgres", a conta será desbloqueada imediatamente. Pior, se você definir a senha como algo fraco, como "postgres", estará exposto a um grande perigo à segurança. Por exemplo, existem vários bots por aí, tentando a combinação de nome de usuário / senha "postgres / postgres" para fazer login no seu sistema UNIX.
O que você deve fazer é seguir a resposta de Chris James :
sudo -u postgres psql postgres
# \password postgres
Enter new password:
Para explicar um pouco. Geralmente, existem duas maneiras padrão de efetuar login no servidor PostgreSQL:
Ao executar o comando "psql" como um usuário UNIX (o chamado IDENT / autenticação PEER), por exemplo: sudo -u postgres psql
. Observe que sudo -u
NÃO desbloqueia o usuário UNIX.
por conexão TCP / IP usando o nome de usuário / senha gerenciados do PostgreSQL (a chamada autenticação TCP) (ou seja, NÃO a senha do UNIX).
Portanto, você nunca deseja definir a senha para a conta UNIX "postgres". Deixe-o bloqueado como está por padrão.
É claro que as coisas podem mudar se você a configurar de maneira diferente da configuração padrão. Por exemplo, era possível sincronizar a senha do PostgreSQL com a senha do UNIX e permitir apenas logins locais. Isso estaria além do escopo desta questão.
/etc/shadow
é onde a senha é mantida @lzap.
Digite na linha de comando:
$ sudo -u postgres psql postgres
postgres=# \password postgres
Você vai ver:
Enter new password:
Enter it again:
Você manipula o postgres através do usuário postgres
, da seguinte maneira:
# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
su
no usuário do postgres sem digitar uma senha. Na maioria dos sistemas, a conta do Postgres Unix está bloqueada (nenhuma senha funcionará), o que significa que somente o root pode acessar su
essa conta.
sudo
vez de su
.
sudo su - postgres
: \
sudo -u postgres
.
No Windows, faça o seguinte (IMPORTANTE: Use uma conta de administrador do Windows ):
Após a instalação, abra <PostgreSQL PATH>\data\pg_hba.conf
.
Modifique estas duas linhas e altere "md5" para "trust":
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Reinicie o serviço PostgreSQL (pode não ser necessário).
(Opcional) Abra um prompt de comandos e altere a página de códigos para 1252:
cmd.exe /c chcp 1252
Faça o login no PostgreSQL. Não será necessária uma senha (observe o parâmetro -U em maiúsculas):
psql -U postgres
(Opcional, recomendado por razões de segurança) Altere a postgres
senha do usuário:
\password postgres
e altere "trust" de volta para "md5" em pg_hba.conf
.
Se você está tentando acessar o shell do PostgreSQL, pode digitar:
psql -U postgres my_database
Onde my_database
está o nome do seu banco de dados.