Postgres rodando em RDS acessível apenas através de um cluster EKS... assim eu tenho um pod (genérico) em nosso cluster que me permite acessar nossa instância postgres. Eu preciso alterar a senha da função que estou usando/conectado como (usuário root). O problema é que quando tento alertar o usuário ou função postgres diz que o usuário/função não existe mesmo que eu possa vê-lo claramente E estou logado como o usuário! Estou logado no postgres como root (nível do SO) e estou como usuário root do postgres (não postgres, mas um superusuário que chamarei ABcDeFGh
nesta pergunta)
postgres=> select user;
user
----------
ABcDeFGh
(1 row)
postgres=> select rolname, rolsuper from pg_roles;
rolname | rolsuper
---------------------------+----------
pg_monitor | f
pg_read_all_settings | f
pg_read_all_stats | f
pg_stat_scan_tables | f
pg_read_server_files | f
pg_write_server_files | f
pg_execute_server_program | f
pg_signal_backend | f
rds_superuser | f
rds_replication | f
rds_iam | f
rds_password | f
rds_ad | f
rdsadmin | t
ABcDeFGh | f
rdsrepladmin | f
rdstopmgr | f
(20 rows)
O usuário com o qual estou logado é ABCDeFGh. Mesmo consultas específicas (aliás, eu não sou um cara do postgres, então)
postgres=> \dg ABcDeFGh
List of roles
Role name | Attributes | Member of
-----------+------------+-----------
postgres=> \dg abcdefgh
List of roles
Role name | Attributes | Member of
-----------+------------+-----------
postgres=> \du abcdefgh
List of roles
Role name | Attributes | Member of
-----------+------------+-----------
postgres=> \du ABcDeFGh
List of roles
Role name | Attributes | Member of
-----------+------------+-----------
mas isso (lista truncada):
postgres=> \du
List of roles
Role name | Attributes | Member of
---------------------+------------------------------------------------------------+-------------------------------------------------------------
ABcDeFGh | Create role, Create DB +| {rds_superuser}
| Password valid until infinity |
e este (lista truncada):
postgres=> \dg
List of roles
Role name | Attributes | Member of
---------------------+------------------------------------------------------------+-------------------------------------------------------------
ABcDeFGh | Create role, Create DB +| {rds_superuser}
| Password valid until infinity |
(e agora acabei de notar que \du
e \dg
são a mesma coisa ou parecem ser apelidos um do outro)
Então isso é muito confuso e frustrante. Como se pode ver, estou usando todas as letras minúsculas e a versão com distinção entre maiúsculas e minúsculas do nome para alter
e \dg
. O erro que recebo ao tentar alterar a senha é role
ou user
não existe. Claramente parece existir.
alter role 'ABcDeFGh' with password '<REDACTED>' valid until '2023-01-02T00:13:34+00:00';
ERROR: syntax error at or near "'ABcDeFGh'"
Toda a documentação que consegui encontrar não explica o que pode estar acontecendo aqui. O usuário existe claramente porque estou logado como usuário. Eu realmente odeio perder meu tempo com esse tipo de lixo ambíguo do software.
Como você (ou outra pessoa) conseguiu criar uma função com um nome que diferencia maiúsculas de minúsculas, agora você precisa citá-la todas as vezes para evitar que o Postgres a converta em minúsculas:
ou