Tento aplicar qualquer um destes para criar read_only_user:
- https://docs.snaplet.dev/guides/postgresql
- https://www.commandprompt.com/education/how-to-create-a-read-only-user-in-postgresql/#:~:text=Conclusion-,To%20create%20a%20read%2Donly%20user %20in%20the%20PostgreSQL%20database,schema%2C%20and%20tables%20in%20it .
- https://www.keyvanfatehi.com/2021/07/14/how-to-create-read-only-user-in-postgresql/
Em todos os casos, o novo read_only_user é capaz de criar uma nova tabela no meu banco de dados (aqui: MicroReseau) onde desejo evitar isso.
Por que o read_only_user pode criar novas tabelas e como evitar isso?
Informação adicional:
Você não fornece nenhuma informação relevante, mas vamos adivinhar: você está usando uma versão do PostgreSQL anterior à v15 e não revogou as permissões inseguras padrão no
public
esquema.Como diz a documentação :
Acabei de encontrar.
O problema era porque o Schema onde estava meu Banco de Dados, tinha em seus privilégios de segurança, o usuário "PÚBLICO" concedeu acesso. É assim que é definido por padrão quando você cria um novo Banco de Dados.
Removi o acesso "PÚBLICO". No meu caso, já existia o Proprietário do banco de dados com privilégio concedido "UC". Então, os links da pergunta usada para criar read_only_user estavam funcionando conforme o esperado.
A propósito, também mudei o nome do Schema de "PUBLIC" para o nome do DatabaseOwner (essa mudança não tem nenhum impacto além de ser mais fácil de entender quando exibida em qualquer ferramenta como o pgAdmin).
Somente para referência:
ANTES
DEPOIS (também mudei seu nome de "public" para o nome do databaseOwner.