Tudo o que estou tentando fazer é fazer backup do meu cluster de banco de dados existente para fazer o upgrade do Postgresql 9.4.8 para o 9.5. Eu estou no Ubuntu 16.04.
Estou ciente desta postagem: Falha na autenticação de senha do Postgres . Na verdade, já foi marcado da última vez que tive esse problema. Eu não reivindico nenhum conhecimento significativo de postgres. Eu nem sempre recebo o que deveria ser um comando psql e o que é suposto ser um comando bash, e os blogs e o que eu não vi nem sempre deixam isso claro para mim. O PG é apenas meu backend para meus projetos Django. Eu certamente não entendo como estou tendo esse problema novamente.
Meu usuário do Ubuntu é malikarumi. Eu tenho dois usuários postgres, maikarumi e postgres. O Postgres é o superusuário. Eu tentei fazer do malikarumi um superusuário há algum tempo atrás, mas isso aparentemente falhou e não, eu não sei por quê.
Aqui está minha primeira tentativa hoje:
malikarumi@Tetuoan2:~$ pg_dumpall > 9-4-backup
pg_dumpall: query failed: ERROR: permission denied for relation pg_authid
pg_dumpall: query was: SELECT oid, rolname, rolsuper, rolinherit,rolcreaterole, rolcreatedb, rolcanlogin, rolconnlimit, rolpassword, rolvaliduntil, rolreplication, pg_catalog.shobj_description(oid, 'pg_authid') as rolcomment, rolname = current_user AS is_current_user FROM pg_authid ORDER BY 2
Isso veio em seguida:
malikarumi@Tetuoan2:~$ pg_dumpall > 9-4-backup -U postgres
Password:
Note que não há nada, nenhuma ajuda, nenhuma indicação do que está errado ou o que fazer sobre isso.
Password:
Password:
pg_dump: [archiver (db)] connection to database "esselldb" failed: FATAL: password authentication failed for user "postgres"
pg_dumpall: pg_dump failed on database "esselldb", exiting
Depois tentei novamente com uma senha em branco e um ponto e vírgula
malikarumi@Tetuoan2:~$ pg_dumpall > 9-4-backup -U postgres;
Password:
pg_dumpall: could not connect to database "template1": fe_sendauth: no password supplied
Observe que a senha funciona para o psql
malikarumi@Tetuoan2:~$ psql -U postgres
Password for user postgres: Note the password works with psql
psql (9.4.8)
Type "help" for help.
Mas o comando não, com ou sem o ponto e vírgula
postgres=# pg_dumpall > 9-4-backup
postgres-# pg_dumpall > 9-4-backup;
ERROR: syntax error at or near "pg_dumpall"
LINE 1: pg_dumpall > 9-4-backup
Isso funciona
malikarumi@Tetuoan2:/etc/postgresql/9.4/main$ sudo cat pg_hba.conf
[sudo] password for malikarumi:
Aparentemente, este é o usuário unix, não o usuário do banco de dados. Mas é, e sempre foi, a mesma senha.
eu mudei isso
# Database administrative login by Unix domain socket
local all postgres md5
para peer, como sugerido no post anterior (mais uma vez - como poderia mudar de volta ?!)
Mas não consegui reiniciar o postgres
malikarumi@Tetuoan2:/etc/postgresql/9.4/main$ pg_ctl stop
pg_ctl: command not found
malikarumi@Tetuoan2:/etc/postgresql/9.4/main$ cd ~
malikarumi@Tetuoan2:~$ pg_ctl stop
pg_ctl: command not found
Ele não funcionou no psql
postgres=# pg_ctl stop
postgres-# pg_ctl stop;
ERROR: syntax error at or near "pg_ctl"
LINE 1: pg_ctl stop
^
postgres=#
Mas pelo menos o psql ainda me permite entrar ...
Então eu reiniciei a máquina inteira e tentei novamente. Você sabe o que aconteceu
malikarumi@Tetuoan2:~$ pg_dumpall > 9-4-backup -U postgres
pg_dumpall: could not connect to database "template1": FATAL: Peer authentication failed for user "postgres"
Por isso, mudei com sucesso, mas ainda não consigo fazê-lo funcionar. NOTA: NÃO me pediu minha senha!
Então eu tentei isso
malikarumi@Tetuoan2:~$ su postgres
Password: the right one
su: Authentication failure
malikarumi@Tetuoan2:~$ su postgres
Password: a blank one
su: Authentication failure
E agora você está atualizado. BTW, eu fui ao postgres docs oficial muitas vezes e encontrá-los denso e pouco compreensível. Se você também conhece um bom tutorial básico para uma pessoa que não seja db como eu, isso seria útil. Obrigado.