{"id":2285,"date":"2026-08-16T18:20:42","date_gmt":"2026-08-16T21:20:42","guid":{"rendered":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/"},"modified":"2026-08-16T18:20:42","modified_gmt":"2026-08-16T21:20:42","slug":"aula-20-usuarios-roles-e-permissoes-no-postgresql","status":"publish","type":"post","link":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/","title":{"rendered":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL"},"content":{"rendered":"<p>Nesta aula do curso <strong>PostgreSQL \u2014 Do Zero ao Avan\u00e7ado<\/strong>, voc\u00ea vai dominar um dos pilares mais cr\u00edticos da administra\u00e7\u00e3o de bancos de dados: o gerenciamento de <strong>usu\u00e1rios, roles e permiss\u00f5es<\/strong> no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que <strong>roles<\/strong> representam tanto usu\u00e1rios de login quanto grupos de privil\u00e9gios, e entender essa arquitetura \u00e9 fundamental para garantir a seguran\u00e7a, a conformidade e a organiza\u00e7\u00e3o de qualquer ambiente de produ\u00e7\u00e3o. Em nossa experi\u00eancia di\u00e1ria nos projetos da <strong>JRT Technology Solutions<\/strong>, observamos que a maioria das brechas de seguran\u00e7a em bancos PostgreSQL decorre de permiss\u00f5es mal configuradas ou da utiliza\u00e7\u00e3o indiscriminada do superusu\u00e1rio \u2014 problemas que esta aula vai ensinar voc\u00ea a evitar desde o in\u00edcio.<\/p>\n<p>Ao longo desta aula, voc\u00ea aprender\u00e1 a criar roles com atributos espec\u00edficos, conceder e revogar privil\u00e9gios em diferentes objetos do banco, configurar a autentica\u00e7\u00e3o no arquivo <strong>pg_hba.conf<\/strong>, verificar permiss\u00f5es do cat\u00e1logo e aplicar boas pr\u00e1ticas de <em>least privilege<\/em> (menor privil\u00e9gio). Tudo isso com comandos reais, sa\u00eddas esperadas e exemplos pr\u00e1ticos que podem ser reproduzidos em qualquer inst\u00e2ncia PostgreSQL. Este conte\u00fado foi desenhado para o n\u00edvel intermedi\u00e1rio do curso, assumindo que voc\u00ea j\u00e1 concluiu as aulas anteriores e possui familiaridade com o terminal, o cliente <strong>psql<\/strong> e conceitos b\u00e1sicos de SQL como <code>CREATE DATABASE<\/code> e <code>CREATE TABLE<\/code>.<\/p>\n<p>Por que essa aula importa tanto? Imagine um servidor PostgreSQL que hospeda m\u00faltiplas aplica\u00e7\u00f5es: cada aplica\u00e7\u00e3o deve possuir credenciais pr\u00f3prias, com acesso apenas \u00e0s bases e tabelas que realmente necessita. Sem um controle fino de permiss\u00f5es, um simples erro de configura\u00e7\u00e3o pode permitir que um usu\u00e1rio leia dados sens\u00edveis de outros sistemas ou at\u00e9 apague informa\u00e7\u00f5es cr\u00edticas. Ao concluir este conte\u00fado, voc\u00ea estar\u00e1 apto a projetar e implementar uma matriz de permiss\u00f5es s\u00f3lida, auditar quem tem acesso a qu\u00ea e responder de forma r\u00e1pida a incidentes envolvendo privil\u00e9gios.<\/p>\n<p>Os pr\u00e9-requisitos para esta aula incluem uma instala\u00e7\u00e3o funcional do PostgreSQL (vers\u00e3o 12 ou superior), acesso ao terminal como usu\u00e1rio com privil\u00e9gios administrativos e um editor de texto para modificar arquivos de configura\u00e7\u00e3o. Voc\u00ea n\u00e3o precisa de nenhuma ferramenta extra, pois todos os comandos utilizam recursos nativos do PostgreSQL \u2014 <strong>psql<\/strong>, <strong>pg_ctl<\/strong>, <strong>systemctl<\/strong> e o cat\u00e1logo <strong>pg_catalog<\/strong>. Caso ainda n\u00e3o tenha o PostgreSQL instalado, revise a Aula 3 deste curso antes de prosseguir.<\/p>\n<p>Ao final da aula, voc\u00ea ter\u00e1 constru\u00eddo um ambiente com roles de grupo, usu\u00e1rios de aplica\u00e7\u00e3o com permiss\u00f5es granulares e uma configura\u00e7\u00e3o de autentica\u00e7\u00e3o robusta baseada em <strong>scram-sha-256<\/strong>. Consequentemente, ser\u00e1 capaz de aplicar essas pr\u00e1ticas em servidores pr\u00f3prios ou em infraestruturas corporativas, exatamente como fazem os especialistas da <strong>JRT Technology Solutions<\/strong> em implementa\u00e7\u00f5es de alta disponibilidade e seguran\u00e7a para clientes de m\u00e9dio e grande porte.<\/p>\n<h3>O que voc\u00ea vai aprender nesta aula<\/h3>\n<p>Antes de colocar a m\u00e3o na massa, \u00e9 importante ter clareza sobre os objetivos de aprendizado desta etapa do curso. Vamos trabalhar com a manipula\u00e7\u00e3o de <strong>usu\u00e1rios, roles e permiss\u00f5es<\/strong> de forma progressiva, iniciando pelos fundamentos te\u00f3ricos e avan\u00e7ando para a configura\u00e7\u00e3o pr\u00e1tica, at\u00e9 chegar \u00e0 auditoria e \u00e0s boas pr\u00e1ticas de seguran\u00e7a. Abaixo, listamos os principais t\u00f3picos que ser\u00e3o abordados:<\/p>\n<ul>\n<li><strong>Conceito de roles<\/strong>: entender por que no PostgreSQL n\u00e3o existe uma entidade separada chamada \u201cusu\u00e1rio\u201d \u2014 tudo \u00e9 role, e a diferen\u00e7a est\u00e1 nos atributos.<\/li>\n<li><strong>Atributos de roles<\/strong>: dominar <code>LOGIN<\/code>, <code>SUPERUSER<\/code>, <code>CREATEDB<\/code>, <code>CREATEROLE<\/code>, <code>REPLICATION<\/code>, <code>PASSWORD<\/code> e demais op\u00e7\u00f5es do comando <code>CREATE ROLE<\/code>.<\/li>\n<li><strong>Privil\u00e9gios no PostgreSQL<\/strong>: compreender a granularidade dos comandos <code>GRANT<\/code> e <code>REVOKE<\/code> em bancos, esquemas, tabelas, sequ\u00eancias, fun\u00e7\u00f5es e outros objetos.<\/li>\n<li><strong>Arquivo pg_hba.conf<\/strong>: configurar regras de autentica\u00e7\u00e3o baseadas em host, banco, usu\u00e1rio e m\u00e9todo, com foco em <code>scram-sha-256<\/code> e <code>peer<\/code>.<\/li>\n<li><strong>Verifica\u00e7\u00e3o e auditoria<\/strong>: consultar o cat\u00e1logo para identificar permiss\u00f5es concedidas e solucionar problemas de nega\u00e7\u00e3o de acesso.<\/li>\n<li><strong>Boas pr\u00e1ticas<\/strong>: aplicar o princ\u00edpio do menor privil\u00e9gio, usar roles de grupo, evitar superusu\u00e1rio em aplica\u00e7\u00f5es e automatizar a gest\u00e3o de permiss\u00f5es.<\/li>\n<\/ul>\n<p>Esses conhecimentos formam a base para aulas futuras do curso, incluindo replica\u00e7\u00e3o, alta disponibilidade e otimiza\u00e7\u00e3o de desempenho, nas quais o controle de acesso desempenha papel essencial. Prepare seu ambiente e acompanhe cada comando com aten\u00e7\u00e3o \u2014 a pr\u00e1tica constante \u00e9 o que separa um administrador iniciante de um profissional de seguran\u00e7a e infraestrutura.<\/p>\n<h3>Pr\u00e9-requisitos e Ambiente<\/h3>\n<p>Antes de come\u00e7ar, voc\u00ea precisa de uma instala\u00e7\u00e3o do PostgreSQL em funcionamento. Nesta aula, mostraremos procedimentos compat\u00edveis com as duas principais fam\u00edlias de distribui\u00e7\u00f5es Linux: <strong>Ubuntu\/Debian<\/strong> e <strong>CentOS\/RHEL\/Rocky Linux<\/strong>. Embora os comandos de instala\u00e7\u00e3o diferem entre si, o comportamento do PostgreSQL e os arquivos de configura\u00e7\u00e3o s\u00e3o os mesmos ap\u00f3s a instala\u00e7\u00e3o, com pequenas varia\u00e7\u00f5es nos caminhos dos diret\u00f3rios.<\/p>\n<p>Para sistemas baseados em Debian, como Ubuntu 22.04 ou Debian 12, o PostgreSQL normalmente reside em <strong>\/etc\/postgresql\/&lt;vers\u00e3o&gt;\/main\/<\/strong> e o servi\u00e7o \u00e9 gerenciado pelo <strong>systemd<\/strong> com o nome <code>postgresql<\/code>. J\u00e1 em distribui\u00e7\u00f5es baseadas em RHEL, como Rocky Linux 9 ou CentOS Stream 9, o diret\u00f3rio de dados fica em <strong>\/var\/lib\/pgsql\/&lt;vers\u00e3o&gt;\/data\/<\/strong> e o servi\u00e7o \u00e9 <code>postgresql-&lt;vers\u00e3o&gt;<\/code>. Verifique qual \u00e9 o seu caso executando os comandos abaixo.<\/p>\n<p>O primeiro passo \u00e9 confirmar se o PostgreSQL est\u00e1 ativo e acess\u00edvel. Em ambos os sistemas, o superusu\u00e1rio padr\u00e3o \u00e9 <strong>postgres<\/strong>, criado automaticamente durante a instala\u00e7\u00e3o. Para conectar-se ao banco, voc\u00ea pode usar o comando <code>sudo -u postgres psql<\/code>, que troca para o usu\u00e1rio do sistema operacional <code>postgres<\/code> e executa o cliente interativo.<\/p>\n<pre><code># Verificar o status do servi\u00e7o no Ubuntu\/Debian\nsudo systemctl status postgresql\n\n# Verificar o status do servi\u00e7o no CentOS\/RHEL\/Rocky Linux\nsudo systemctl status postgresql-15\n\n# Conectar-se ao PostgreSQL como superusu\u00e1rio (ambos os sistemas)\nsudo -u postgres psql -c \"SELECT version();\"<\/code><\/pre>\n<p>Esse \u00faltimo comando retorna a vers\u00e3o exata do servidor, o que ajuda a confirmar que o cliente e o servidor est\u00e3o compat\u00edveis. A sa\u00edda esperada deve conter uma linha semelhante a:<\/p>\n<pre><code class=\"output\">                                                        version                                                        \n-------------------------------------------------------------------------------------------------------------------------\n PostgreSQL 15.8 (Ubuntu 15.8-1.pgdg22.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 15.8\n(1 row)<\/code><\/pre>\n<p>Al\u00e9m do servi\u00e7o ativo, voc\u00ea precisar\u00e1 de um editor de texto para modificar o <strong>pg_hba.conf<\/strong> \u2014 recomendamos <code>nano<\/code> ou <code>vim<\/code>. Se estiver em um servidor remoto, certifique-se de ter acesso SSH e permiss\u00f5es de <code>sudo<\/code>. Outro pr\u00e9-requisito importante \u00e9 ter conclu\u00eddo as aulas anteriores, pois voc\u00ea deve saber criar bancos, tabelas e utilizar comandos b\u00e1sicos do <strong>psql<\/strong>, como <code>\\l<\/code>, <code>\\c<\/code> e <code>\\dt<\/code>. Todos os exemplos desta aula partem do pressuposto de que existe uma base chamada <code>appdb<\/code> e um esquema <code>public<\/code>, padr\u00e3o do PostgreSQL.<\/p>\n<p>Por fim, recomendamos que voc\u00ea fa\u00e7a um backup l\u00f3gico de qualquer banco de produ\u00e7\u00e3o antes de testar comandos de revoga\u00e7\u00e3o de permiss\u00f5es. Embora os procedimentos desta aula sejam seguros, \u00e9 sempre prudente trabalhar em um ambiente de desenvolvimento ou laborat\u00f3rio. Em nossos treinamentos na <strong>JRT Technology Solutions<\/strong>, orientamos os alunos a criarem uma inst\u00e2ncia isolada para pr\u00e1ticas, evitando impactos em dados reais.<\/p>\n<h3>Conceitos Fundamentais \u2014 Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL<\/h3>\n<p>No PostgreSQL, o termo <strong>role<\/strong> (papel) abrange tanto usu\u00e1rios de login quanto grupos de permiss\u00f5es. Ao contr\u00e1rio do MySQL ou do SQL Server, onde existem contas de usu\u00e1rio separadas de grupos ou roles, aqui a entidade \u00e9 \u00fanica: um role pode ou n\u00e3o ter o atributo <code>LOGIN<\/code>. Quando um role possui <code>LOGIN<\/code>, ele pode autenticar-se no servidor; quando n\u00e3o possui, funciona como um grupo, servindo apenas para agregar privil\u00e9gios e ser concedido a outros roles. Essa flexibilidade simplifica a administra\u00e7\u00e3o e permite criar hierarquias de permiss\u00f5es de forma elegante.<\/p>\n<p>Cada role possui um conjunto de atributos que definem suas capacidades. O atributo <code>SUPERUSER<\/code>, por exemplo, concede todos os privil\u00e9gios poss\u00edveis e ignora qualquer verifica\u00e7\u00e3o de permiss\u00e3o \u2014 por isso deve ser usado com extrema cautela. Outros atributos importantes incluem <code>CREATEDB<\/code>, que permite criar bancos de dados, <code>CREATEROLE<\/code>, que permite criar e gerenciar outros roles, e <code>REPLICATION<\/code>, necess\u00e1rio para tarefas de replica\u00e7\u00e3o e backup f\u00edsico. A tabela abaixo resume os atributos mais relevantes que voc\u00ea pode definir ao criar ou alterar um role:<\/p>\n<table>\n<thead>\n<tr>\n<th>Atributo<\/th>\n<th>Descri\u00e7\u00e3o<\/th>\n<th>Exemplo de uso<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>LOGIN<\/code><\/td>\n<td>Permite que o role se conecte ao servidor<\/td>\n<td><code>CREATE ROLE app_user LOGIN;<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>SUPERUSER<\/code><\/td>\n<td>Concede todos os privil\u00e9gios, sem verifica\u00e7\u00f5es<\/td>\n<td><code>CREATE ROLE admin SUPERUSER;<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>CREATEDB<\/code><\/td>\n<td>Permite criar bases de dados<\/td>\n<td><code>CREATE ROLE dev CREATEDB;<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>CREATEROLE<\/code><\/td>\n<td>Permite criar e gerenciar outros roles<\/td>\n<td><code>CREATE ROLE manager CREATEROLE;<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>REPLICATION<\/code><\/td>\n<td>Habilita conex\u00f5es de replica\u00e7\u00e3o<\/td>\n<td><code>CREATE ROLE replica REPLICATION;<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>PASSWORD<\/code><\/td>\n<td>Define a senha do role<\/td>\n<td><code>CREATE ROLE app_user LOGIN PASSWORD 'senha_forte';<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>VALID UNTIL<\/code><\/td>\n<td>Define data de expira\u00e7\u00e3o do role<\/td>\n<td><code>CREATE ROLE temp LOGIN VALID UNTIL '2026-12-31';<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Al\u00e9m dos atributos, o PostgreSQL implementa um sistema de <strong>privil\u00e9gios<\/strong> extremamente granular, baseado nos comandos <code>GRANT<\/code> e <code>REVOKE<\/code>. Os privil\u00e9gios s\u00e3o aplicados a objetos espec\u00edficos \u2014 como bancos, esquemas, tabelas, sequ\u00eancias, fun\u00e7\u00f5es e <em>tablespaces<\/em> \u2014 e podem ser concedidos a roles individuais ou a grupos. Por exemplo, o privil\u00e9gio <code>SELECT<\/code> em uma tabela permite ler suas linhas, enquanto <code>INSERT<\/code>, <code>UPDATE<\/code> e <code>DELETE<\/code> correspondem \u00e0s opera\u00e7\u00f5es de escrita. O privil\u00e9gio <code>USAGE<\/code> \u00e9 necess\u00e1rio para acessar esquemas e sequ\u00eancias, e <code>EXECUTE<\/code> para executar fun\u00e7\u00f5es. Essa granularidade permite que voc\u00ea restrinja um usu\u00e1rio a apenas ler uma tabela espec\u00edfica, sem conceder acesso a todo o banco.<\/p>\n<p>Para visualizar os roles existentes e seus atributos, voc\u00ea pode utilizar o comando <code>\\du<\/code> dentro do <strong>psql<\/strong> ou consultar a vis\u00e3o <code>pg_roles<\/code>. A consulta abaixo retorna os principais campos de cada role, incluindo se pode logar, se \u00e9 superusu\u00e1rio, se pode criar bancos e se a senha est\u00e1 definida:<\/p>\n<pre><code>-- Listar roles e seus atributos a partir do cat\u00e1logo\nSELECT rolname,\n       rolcanlogin AS pode_logar,\n       rolsuper AS superusuario,\n       rolcreatedb AS pode_criar_bd,\n       rolcreaterole AS pode_criar_role,\n       rolvaliduntil AS valido_ate\nFROM pg_roles\nORDER BY rolname;<\/code><\/pre>\n<p>A execu\u00e7\u00e3o desse comando em uma instala\u00e7\u00e3o padr\u00e3o retorna algo como:<\/p>\n<pre><code class=\"output\"> rolname   | pode_logar | superusuario | pode_criar_bd | pode_criar_role | valido_ate \n-----------+------------+--------------+---------------+-----------------+------------\n postgres  | t          | t            | t             | t               | \n(1 row)<\/code><\/pre>\n<p>Observe que o role <strong>postgres<\/strong>, criado por padr\u00e3o, possui todos os atributos habilitados. Em produ\u00e7\u00e3o, voc\u00ea nunca deve utilizar esse role para aplica\u00e7\u00f5es \u2014 a pr\u00e1tica correta \u00e9 criar roles espec\u00edficos com o m\u00ednimo de privil\u00e9gios necess\u00e1rio. Esse entendimento dos fundamentos \u00e9 o alicerce para as se\u00e7\u00f5es pr\u00e1ticas a seguir, onde voc\u00ea criar\u00e1 seus primeiros roles de grupo e usu\u00e1rios de aplica\u00e7\u00e3o.<\/p>\n<h3>Passo a Passo \u2014 Criando roles e usu\u00e1rios do zero<\/h3>\n<p>Agora que voc\u00ea compreende a teoria, vamos partir para a pr\u00e1tica. Nesta se\u00e7\u00e3o, voc\u00ea criar\u00e1 uma estrutura de roles que simula um cen\u00e1rio real: um <strong>role de grupo<\/strong> chamado <code>app_readonly<\/code>, um <strong>usu\u00e1rio de aplica\u00e7\u00e3o<\/strong> chamado <code>app_user<\/code> e um <strong>administrador<\/strong> chamado <code>dba_admin<\/code>. O objetivo \u00e9 demonstrar como conceder privil\u00e9gios de leitura em um banco espec\u00edfico e verificar o resultado de cada etapa. Siga os passos na ordem exata.<\/p>\n<p>O procedimento ser\u00e1 executado inteiramente dentro do <strong>psql<\/strong>, como superusu\u00e1rio <code>postgres<\/code>. Primeiro, conecte-se ao servidor com o comando <code>sudo -u postgres psql<\/code>. Em seguida, siga a sequ\u00eancia numerada abaixo para criar os roles e aplicar as permiss\u00f5es. Cada comando ser\u00e1 explicado linha por linha logo ap\u00f3s o bloco de c\u00f3digo.<\/p>\n<ol>\n<li><strong>Criar o role de grupo <code>app_readonly<\/code><\/strong> sem privil\u00e9gio de login, pois ele ser\u00e1 apenas um agregador de permiss\u00f5es.<\/li>\n<li><strong>Criar o usu\u00e1rio de aplica\u00e7\u00e3o <code>app_user<\/code><\/strong> com login habilitado e senha forte.<\/li>\n<li><strong>Criar o role de administrador <code>dba_admin<\/code><\/strong> com permiss\u00e3o para criar bancos e roles, mas sem superusu\u00e1rio completo.<\/li>\n<li><strong>Conceder o role de grupo <code>app_readonly<\/code> ao <code>app_user<\/code><\/strong>, para que ele herde os privil\u00e9gios do grupo.<\/li>\n<li><strong>Conceder privil\u00e9gios de leitura<\/strong> no banco <code>appdb<\/code> ao grupo <code>app_readonly<\/code>.<\/li>\n<li><strong>Testar a conex\u00e3o e os privil\u00e9gios<\/strong> com o usu\u00e1rio <code>app_user<\/code>.<\/li>\n<\/ol>\n<p>Execute os comandos abaixo no <strong>psql<\/strong>. Note que utilizamos o comando <code>\\c appdb<\/code> para conectar ao banco de aplica\u00e7\u00e3o antes de conceder permiss\u00f5es no banco correto.<\/p>\n<pre><code>-- Passo 1: Criar role de grupo sem login (apenas agrega privil\u00e9gios)\nCREATE ROLE app_readonly;\n\n-- Passo 2: Criar usu\u00e1rio de aplica\u00e7\u00e3o com login e senha\nCREATE ROLE app_user WITH LOGIN PASSWORD 'Str0ng@Passw0rd!';\n\n-- Passo 3: Criar role de administrador com privil\u00e9gios limitados\nCREATE ROLE dba_admin WITH LOGIN CREATEDB CREATEROLE PASSWORD 'Adm!n@2026';\n\n-- Passo 4: Conceder o grupo app_readonly ao usuario app_user\n-- Isso faz com que app_user herde todos os privil\u00e9gios de app_readonly\nGRANT app_readonly TO app_user;\n\n-- Passo 5: Conectar ao banco de aplica\u00e7\u00e3o\n-- Em uma instala\u00e7\u00e3o real, o banco appdb j\u00e1 deve existir (crie com CREATE DATABASE appdb; se necess\u00e1rio)\n\\c appdb\n\n-- Passo 6: Conceder privil\u00e9gio de conex\u00e3o ao banco appdb para o grupo\nGRANT CONNECT ON DATABASE appdb TO app_readonly;\n\n-- Passo 7: Conceder privil\u00e9gio de uso do esquema public ao grupo\nGRANT USAGE ON SCHEMA public TO app_readonly;\n\n-- Passo 8: Conceder SELECT em todas as tabelas existentes no esquema public\nGRANT SELECT ON ALL TABLES IN SCHEMA public TO app_readonly;\n\n-- Passo 9: Garantir que futuras tabelas do esquema public tamb\u00e9m tenham SELECT para o grupo\nALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO app_readonly;<\/code><\/pre>\n<p>Vamos analisar cada comando. O <code>CREATE ROLE app_readonly;<\/code> cria um role sem atributo <code>LOGIN<\/code>, portanto incapaz de autenticar-se \u2014 servir\u00e1 apenas como grupo. O <code>CREATE ROLE app_user WITH LOGIN PASSWORD '...';<\/code> cria um role que pode se conectar, com senha definida. O <code>CREATE ROLE dba_admin WITH LOGIN CREATEDB CREATEROLE PASSWORD '...';<\/code> cria um administrador com poderes de criar bancos e roles, mas sem superusu\u00e1rio, seguindo o princ\u00edpio do menor privil\u00e9gio. O comando <code>GRANT app_readonly TO app_user;<\/code> estabelece a associa\u00e7\u00e3o de grupo, fazendo com que <code>app_user<\/code> herde os privil\u00e9gios que forem concedidos a <code>app_readonly<\/code>.<\/p>\n<p>Ap\u00f3s a conex\u00e3o ao banco <code>appdb<\/code>, o comando <code>GRANT CONNECT ON DATABASE appdb TO app_readonly;<\/code> permite que os membros do grupo estabele\u00e7am conex\u00e3o com esse banco. Sem esse privil\u00e9gio, o usu\u00e1rio n\u00e3o consegue nem entrar no banco. Em seguida, <code>GRANT USAGE ON SCHEMA public TO app_readonly;<\/code> permite acessar o esquema <code>public<\/code> \u2014 sem <code>USAGE<\/code>, o usu\u00e1rio n\u00e3o pode referenciar objetos dentro do esquema, mesmo que tenha <code>SELECT<\/code> na tabela. O <code>GRANT SELECT ON ALL TABLES IN SCHEMA public<\/code> concede leitura em todas as tabelas existentes no momento. Por fim, o <code>ALTER DEFAULT PRIVILEGES<\/code> garante que tabelas criadas futuramente herdem automaticamente o privil\u00e9gio de leitura para o grupo.<\/p>\n<p>Para verificar se a cria\u00e7\u00e3o foi bem-sucedida, execute o comando <code>\\du<\/code> no <strong>psql<\/strong>. A sa\u00edda deve listar os roles criados, com a associa\u00e7\u00e3o de grupo indicada na coluna <code>Member of<\/code>:<\/p>\n<pre><code class=\"output\">                                   List of roles\n Role name   |                         Attributes                         |    Member of    \n-------------+------------------------------------------------------------+-----------------\n app_user    |                                                            | {app_readonly}\n dba_admin   | Create DB, Create role                                     | {}\n postgres    | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n app_readonly| Cannot login                                               | {}\n\n(4 rows)<\/code><\/pre>\n<p>Observe que <code>app_readonly<\/code> aparece com o atributo <strong>Cannot login<\/strong>, indicando que \u00e9 um grupo. O role <code>app_user<\/code> est\u00e1 listado como membro de <code>app_readonly<\/code>, confirmando a associa\u00e7\u00e3o. O <code>dba_admin<\/code> possui apenas <code>Create DB<\/code> e <code>Create role<\/code>, sem superusu\u00e1rio. Esta estrutura j\u00e1 \u00e9 suficiente para controlar o acesso de aplica\u00e7\u00f5es com seguran\u00e7a.<\/p>\n<h3>Configura\u00e7\u00e3o Detalhada \u2014 pg_hba.conf e autentica\u00e7\u00e3o<\/h3>\n<p>O arquivo <strong>pg_hba.conf<\/strong> (Host-Based Authentication) controla como os clientes se autenticam no PostgreSQL. Cada regra define o tipo de conex\u00e3o, o banco de dados, o usu\u00e1rio, o endere\u00e7o de origem e o m\u00e9todo de autentica\u00e7\u00e3o. O PostgreSQL processa as regras em ordem, da primeira \u00e0 \u00faltima, e a primeira correspond\u00eancia \u00e9 aplicada. Portanto, a ordem das entradas \u00e9 crucial: uma regra muito permissiva no in\u00edcio pode bloquear regras mais restritivas definidas posteriormente.<\/p>\n<p>Em sistemas Ubuntu\/Debian, o arquivo reside em <strong>\/etc\/postgresql\/&lt;vers\u00e3o&gt;\/main\/pg_hba.conf<\/strong>. Em CentOS\/RHEL\/Rocky Linux, fica em <strong>\/var\/lib\/pgsql\/&lt;vers\u00e3o&gt;\/data\/pg_hba.conf<\/strong>. Voc\u00ea pode localizar o arquivo com o comando <code>SHOW hba_file;<\/code> dentro do <strong>psql<\/strong>. Para editar, utilize <code>sudo nano &lt;caminho&gt;<\/code> ou <code>sudo vim &lt;caminho&gt;<\/code>. Ap\u00f3s modificar o arquivo, recarregue a configura\u00e7\u00e3o sem reiniciar o servi\u00e7o com <code>SELECT pg_reload_conf();<\/code> ou <code>sudo systemctl reload postgresql<\/code> (ajuste o nome do servi\u00e7o conforme sua distribui\u00e7\u00e3o).<\/p>\n<p>Abaixo apresentamos um exemplo completo e comentado do arquivo <strong>pg_hba.conf<\/strong> para um ambiente de produ\u00e7\u00e3o. Este modelo utiliza <strong>scram-sha-256<\/strong> para conex\u00f5es remotas, que \u00e9 o m\u00e9todo recomendado atualmente, e <strong>peer<\/strong> para conex\u00f5es locais do usu\u00e1rio <code>postgres<\/code>. Ele tamb\u00e9m inclui regras para replica\u00e7\u00e3o e redes internas, demonstrando como segregar acessos por origem e banco.<\/p>\n<pre><code># TYPE  DATABASE        USER            ADDRESS                 METHOD\n# ---------------------------------------------------------------\n# \"local\" \u00e9 para conex\u00f5es via socket Unix\nlocal   all             postgres                                peer\nlocal   all             all                                     scram-sha-256\n# Conex\u00f5es IPv4 locais (loopback)\nhost    all             all             127.0.0.1\/32            scram-sha-256\n# Conex\u00f5es IPv6 locais\nhost    all             all             ::1\/128                 scram-sha-256\n# Rede interna de produ\u00e7\u00e3o (ajuste o CIDR conforme sua topologia)\nhost    appdb           app_readonly    10.0.0.0\/24             scram-sha-256\nhost    appdb           app_user        10.0.0.0\/24             scram-sha-256\n# Banimento de todas as outras conex\u00f5es remotas ao appdb\nhost    all             all             0.0.0.0\/0               reject\n# Regras de replica\u00e7\u00e3o\nhost    replication     replica         10.0.1.0\/24             scram-sha-256\nhost    replication     all             0.0.0.0\/0               reject<\/code><\/pre>\n<p>Cada linha do arquivo cont\u00e9m cinco campos principais, separados por espa\u00e7os ou tabula\u00e7\u00f5es. O campo <code>TYPE<\/code> pode ser <strong>local<\/strong> (socket Unix), <strong>host<\/strong> (TCP\/IP com ou sem SSL), <strong>hostssl<\/strong> (somente SSL) ou <strong>hostnossl<\/strong> (somente sem SSL). O campo <code>DATABASE<\/code> pode ser um nome espec\u00edfico, <code>all<\/code> ou uma lista separada por v\u00edrgulas. O campo <code>USER<\/code> aceita nomes de roles, <code>all<\/code> ou grupos com prefixo <code>+<\/code>. O campo <code>ADDRESS<\/code> usa nota\u00e7\u00e3o CIDR para restringir origens de rede. Por fim, o campo <code>METHOD<\/code> define o m\u00e9todo de autentica\u00e7\u00e3o, como <code>scram-sha-256<\/code>, <code>md5<\/code>, <code>peer<\/code>, <code>ident<\/code> ou <code>reject<\/code>.<\/p>\n<p>\u00c9 importante notar a ordem das regras: a regra para o <code>postgres<\/code> via <code>peer<\/code> garante que o superusu\u00e1rio local n\u00e3o precise de senha, pois a autentica\u00e7\u00e3o \u00e9 feita pelo usu\u00e1rio do sistema operacional. As regras seguintes restringem o banco <code>appdb<\/code> a redes internas espec\u00edficas e, finalmente, a regra <code>reject<\/code> bloqueia qualquer outra tentativa remota. A tabela abaixo compara os principais m\u00e9todos de autentica\u00e7\u00e3o:<\/p>\n<table>\n<thead>\n<tr>\n<th>M\u00e9todo<\/th>\n<th>Descri\u00e7\u00e3o<\/th>\n<th>Uso recomendado<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>trust<\/code><\/td>\n<td>Sem autentica\u00e7\u00e3o; qualquer usu\u00e1rio \u00e9 aceito<\/td>\n<td>Nunca usar em produ\u00e7\u00e3o<\/td>\n<\/tr>\n<tr>\n<td><code>peer<\/code><\/td>\n<td>Autentica pelo usu\u00e1rio do sistema operacional<\/td>\n<td>Conex\u00f5es locais via socket Unix<\/td>\n<\/tr>\n<tr>\n<td><code>scram-sha-256<\/code><\/td>\n<td>Autentica\u00e7\u00e3o com senha criptografada (SCRAM)<\/td>\n<td>Recomendado para conex\u00f5es remotas<\/td>\n<\/tr>\n<tr>\n<td><code>md5<\/code><\/td>\n<td>Autentica\u00e7\u00e3o com hash MD5 (obsoleto)<\/td>\n<td>Evitar; migrar para SCRAM<\/td>\n<\/tr>\n<tr>\n<td><code>reject<\/code><\/td>\n<td>Rejeita a conex\u00e3o imediatamente<\/td>\n<td>Bloqueio de redes n\u00e3o autorizadas<\/td>\n<\/tr>\n<tr>\n<td><code>ldap<\/code><\/td>\n<td>Autentica\u00e7\u00e3o via servidor LDAP<\/td>\n<td>Ambientes corporativos com diret\u00f3rio central<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ap\u00f3s editar o arquivo, \u00e9 imprescind\u00edvel recarregar a configura\u00e7\u00e3o. O comando <code>SELECT pg_reload_conf();<\/code> pode ser executado diretamente no <strong>psql<\/strong> como superusu\u00e1rio, ou voc\u00ea pode usar o <strong>systemctl<\/strong>. A sa\u00edda esperada para o comando SQL \u00e9 simples, indicando sucesso:<\/p>\n<pre><code>-- Recarregar a configura\u00e7\u00e3o sem reiniciar o servidor\nSELECT pg_reload_conf();\n\n-- Verificar se as regras foram carregadas\nSELECT * FROM pg_hba_file_rules ORDER BY line_number;<\/code><\/pre>\n<pre><code class=\"output\"> pg_reload_conf \n----------------\n t\n(1 row)\n<\/code><\/pre>\n<p>A consulta a <code>pg_hba_file_rules<\/code> exibe todas as regras interpretadas pelo servidor, permitindo confirmar que o arquivo foi lido corretamente. Se houver um erro de sintaxe, o PostgreSQL registra o problema nos logs e mant\u00e9m a configura\u00e7\u00e3o anterior ativa. Portanto, sempre verifique os logs ap\u00f3s altera\u00e7\u00f5es no <strong>pg_hba.conf<\/strong>, especialmente em servidores de produ\u00e7\u00e3o.<\/p>\n<h3>Gerenciando Usu\u00e1rios, roles e permiss\u00f5es no dia a dia<\/h3>\n<p>No cotidiano de um administrador de banco, as tarefas envolvem alterar atributos de roles, conceder e revogar privil\u00e9gios em diferentes objetos e auditar o que j\u00e1 foi concedido. Esta se\u00e7\u00e3o apresenta os comandos essenciais para esse gerenciamento, com exemplos pr\u00e1ticos e refer\u00eancia r\u00e1pida. Voc\u00ea aprender\u00e1 a usar <code>ALTER ROLE<\/code>, <code>GRANT<\/code>, <code>REVOKE<\/code> e <code>ALTER DEFAULT PRIVILEGES<\/code> de forma sistem\u00e1tica.<\/p>\n<p>O comando <code>ALTER ROLE<\/code> permite modificar atributos de um role existente. Por exemplo, para alterar a senha do <code>app_user<\/code>, conceder o atributo <code>CREATEDB<\/code> ao <code>dba_admin<\/code> ou definir uma data de expira\u00e7\u00e3o para um usu\u00e1rio tempor\u00e1rio, voc\u00ea pode executar os comandos abaixo. Cada altera\u00e7\u00e3o \u00e9 aplicada imediatamente e afeta as pr\u00f3ximas conex\u00f5es; conex\u00f5es j\u00e1 estabelecidas n\u00e3o s\u00e3o interrompidas, exceto se voc\u00ea revogar o privil\u00e9gio de conex\u00e3o.<\/p>\n<pre><code>-- Alterar a senha de um usu\u00e1rio (use sempre senhas fortes)\nALTER ROLE app_user WITH PASSWORD 'N0va@Senha!2026';\n\n-- Conceder atributo CREATEDB a um role admin limitado\nALTER ROLE dba_admin WITH CREATEDB;\n\n-- Definir expira\u00e7\u00e3o de um role tempor\u00e1rio\nALTER ROLE temp_user WITH VALID UNTIL '2026-12-31';\n\n-- Renomear um role (\u00fatil em reorganiza\u00e7\u00f5es)\nALTER ROLE app_user RENAME TO app_user_v2;\n\n-- Remover um role (apenas se n\u00e3o possuir objetos dependentes)\nDROP ROLE temp_user;<\/code><\/pre>\n<p>O gerenciamento de privil\u00e9gios exige aten\u00e7\u00e3o especial aos diferentes n\u00edveis de objetos. A tabela a seguir resume os comandos <code>GRANT<\/code> e <code>REVOKE<\/code> mais comuns, organizados por tipo de objeto, para que voc\u00ea possa consult\u00e1-la rapidamente durante o dia a dia:<\/p>\n<table>\n<thead>\n<tr>\n<th>Objeto<\/th>\n<th>Conceder<\/th>\n<th>Revogar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Banco de dados<\/td>\n<td><code>GRANT CONNECT ON DATABASE appdb TO app_user;<\/code><\/td>\n<td><code>REVOKE CONNECT ON DATABASE appdb FROM app_user;<\/code><\/td>\n<\/tr>\n<tr>\n<td>Esquema<\/td>\n<td><code>GRANT USAGE ON SCHEMA public TO app_user;<\/code><\/td>\n<td><code>REVOKE USAGE ON SCHEMA public FROM app_user;<\/code><\/td>\n<\/tr>\n<tr>\n<td>Tabela<\/td>\n<td><code>GRANT SELECT, INSERT ON tabela TO app_user;<\/code><\/td>\n<td><code>REVOKE INSERT ON tabela FROM app_user;<\/code><\/td>\n<\/tr>\n<tr>\n<td>Sequ\u00eancia<\/td>\n<td><code>GRANT USAGE, SELECT ON SEQUENCE seq TO app_user;<\/code><\/td>\n<td><code>REVOKE USAGE ON SEQUENCE seq FROM app_user;<\/code><\/td>\n<\/tr>\n<tr>\n<td>Fun\u00e7\u00e3o<\/td>\n<td><code>GRANT EXECUTE ON FUNCTION func() TO app_user;<\/code><\/td>\n<td><code>REVOKE EXECUTE ON FUNCTION func() FROM app_user;<\/code><\/td>\n<\/tr>\n<tr>\n<td>Todas as tabelas<\/td>\n<td><code>GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_user;<\/code><\/td>\n<td><code>REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM app_user;<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Um ponto frequentemente negligenciado \u00e9 o privil\u00e9gio de <code>USAGE<\/code> em sequ\u00eancias. Se uma tabela possui uma coluna <code>SERIAL<\/code>, o PostgreSQL cria uma sequ\u00eancia associada. Ao conceder apenas <code>INSERT<\/code> na tabela, o usu\u00e1rio pode receber erros ao tentar inserir registros, pois n\u00e3o tem permiss\u00e3o para usar a sequ\u00eancia. A boa pr\u00e1tica \u00e9 conceder <code>USAGE, SELECT<\/code> nas sequ\u00eancias do esquema juntamente com os privil\u00e9gios de tabela, conforme mostrado abaixo:<\/p>\n<pre><code>-- Conceder privil\u00e9gios de escrita em tabelas e sequ\u00eancias do esquema public\nGRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_write;\nGRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO app_write;\n\n-- Configurar privil\u00e9gios padr\u00e3o para futuras tabelas e sequ\u00eancias\nALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_write;\nALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO app_write;<\/code><\/pre>\n<p>Para auditar permiss\u00f5es, o PostgreSQL oferece vis\u00f5es<\/p>\n<div style=\"margin:52px 0 40px;padding:36px 28px;background:linear-gradient(135deg,#0f172a 0%,#1a2744 100%);border:2px solid #25D366;border-radius:18px;text-align:center;box-shadow:0 4px 28px rgba(37,211,102,0.18)\">\n<p style=\"margin:0 0 10px;font-size:18px;color:#ffffff;font-weight:700;line-height:1.4\">Quer aprender na pr\u00e1tica com especialistas?<\/p>\n<p style=\"margin:0 0 28px;font-size:15px;color:#94a3b8;font-weight:400;line-height:1.6\">A JRT Technology Solutions oferece treinamentos e implementa\u00e7\u00e3o de PostgreSQL para equipes corporativas.<\/p>\n<p>  <a href=\"https:\/\/api.whatsapp.com\/send\/?phone=5521980606699&#038;text=Ol%C3%A1!%20Tenho%20interesse%20no%20treinamento%20de%20PostgreSQL.&#038;type=phone_number&#038;app_absent=0\"\n     target=\"_blank\" rel=\"noopener noreferrer\"\n     style=\"display:inline-flex;align-items:center;gap:12px;background:#25D366;color:#ffffff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:16px;font-weight:700;padding:15px 32px;border-radius:100px;text-decoration:none;box-shadow:0 4px 16px rgba(37,211,102,0.45);letter-spacing:0.01em\"><br \/>\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"#ffffff\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/><\/svg><br \/>\n    Falar no WhatsApp<br \/>\n  <\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Nesta aula do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar um dos pilares mais cr\u00edticos da administra\u00e7\u00e3o de bancos de dados: o gerenciamento de usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que roles representam tanto usu\u00e1rios de login quanto grupos de privil\u00e9gios, &#8230; <a title=\"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL\" class=\"read-more\" href=\"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/\" aria-label=\"Read more about Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL\">Ler mais<\/a><\/p>\n","protected":false},"author":1,"featured_media":2284,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"iawp_total_views":1,"footnotes":""},"categories":[75],"tags":[3324],"class_list":["post-2285","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-postgresql-do-zero-ao-avancado-usuarios-roles-e-permissoes-no-postgresql"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Nesta aula do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar um dos pilares mais cr\u00edticos da administra\u00e7\u00e3o de bancos de dados: o gerenciamento de usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que roles representam tanto usu\u00e1rios de login quanto grupos de privil\u00e9gios,\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Thiago Paes Rodrigues\"\/>\n\t<meta name=\"google-site-verification\" content=\"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_BR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta property=\"og:description\" content=\"Nesta aula do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar um dos pilares mais cr\u00edticos da administra\u00e7\u00e3o de bancos de dados: o gerenciamento de usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que roles representam tanto usu\u00e1rios de login quanto grupos de privil\u00e9gios,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"100\" \/>\n\t\t<meta property=\"og:image:height\" content=\"75\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-08-16T21:20:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-08-16T21:20:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61590814880509\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Nesta aula do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar um dos pilares mais cr\u00edticos da administra\u00e7\u00e3o de bancos de dados: o gerenciamento de usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que roles representam tanto usu\u00e1rios de login quanto grupos de privil\u00e9gios,\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#blogposting\",\"name\":\"Aula 20: Usu\\u00e1rios, roles e permiss\\u00f5es no PostgreSQL - BLOG - JRT Technology Solutions\",\"headline\":\"Aula 20: Usu\\u00e1rios, roles e permiss\\u00f5es no PostgreSQL\",\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/ai-image-1786915236851.jpg\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 20: Usu\\u00e1rios, roles e permiss\\u00f5es no PostgreSQL\"},\"datePublished\":\"2026-08-16T18:20:42-03:00\",\"dateModified\":\"2026-08-16T18:20:42-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#webpage\"},\"articleSection\":\"DevOps, PostgreSQL \\u2014 Do Zero ao Avan\\u00e7ado: Usu\\u00e1rios, roles e permiss\\u00f5es no PostgreSQL\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/#listItem\",\"name\":\"DevOps\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/#listItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#listItem\",\"name\":\"Aula 20: Usu\\u00e1rios, roles e permiss\\u00f5es no PostgreSQL\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#listItem\",\"position\":3,\"name\":\"Aula 20: Usu\\u00e1rios, roles e permiss\\u00f5es no PostgreSQL\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/#listItem\",\"name\":\"DevOps\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"telephone\":\"+552138277513\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/cropped-logo-mini.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#organizationLogo\",\"width\":100,\"height\":75},\"image\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=61590814880509\",\"https:\\\/\\\/www.instagram.com\\\/jrtx.tech\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/\",\"name\":\"Thiago Paes Rodrigues\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#authorImage\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/cropped-foto-rascunho3-96x96.jpeg\",\"width\":96,\"height\":96,\"caption\":\"Thiago Paes Rodrigues\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#webpage\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/\",\"name\":\"Aula 20: Usu\\u00e1rios, roles e permiss\\u00f5es no PostgreSQL - BLOG - JRT Technology Solutions\",\"description\":\"Nesta aula do curso PostgreSQL \\u2014 Do Zero ao Avan\\u00e7ado, voc\\u00ea vai dominar um dos pilares mais cr\\u00edticos da administra\\u00e7\\u00e3o de bancos de dados: o gerenciamento de usu\\u00e1rios, roles e permiss\\u00f5es no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que roles representam tanto usu\\u00e1rios de login quanto grupos de privil\\u00e9gios,\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/ai-image-1786915236851.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#mainImage\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 20: Usu\\u00e1rios, roles e permiss\\u00f5es no PostgreSQL\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/16\\\/aula-20-usuarios-roles-e-permissoes-no-postgresql\\\/#mainImage\"},\"datePublished\":\"2026-08-16T18:20:42-03:00\",\"dateModified\":\"2026-08-16T18:20:42-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"alternateName\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL - BLOG - JRT Technology Solutions","description":"Nesta aula do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar um dos pilares mais cr\u00edticos da administra\u00e7\u00e3o de bancos de dados: o gerenciamento de usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que roles representam tanto usu\u00e1rios de login quanto grupos de privil\u00e9gios,","canonical_url":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#blogposting","name":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL - BLOG - JRT Technology Solutions","headline":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL","author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/08\/ai-image-1786915236851.jpg","width":1440,"height":1024,"caption":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL"},"datePublished":"2026-08-16T18:20:42-03:00","dateModified":"2026-08-16T18:20:42-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#webpage"},"isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#webpage"},"articleSection":"DevOps, PostgreSQL \u2014 Do Zero ao Avan\u00e7ado: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL"},{"@type":"BreadcrumbList","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","position":1,"name":"Home","item":"https:\/\/jrtx.com.br\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/devops\/#listItem","name":"DevOps"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/devops\/#listItem","position":2,"name":"DevOps","item":"https:\/\/jrtx.com.br\/blog\/category\/devops\/","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#listItem","name":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL"},"previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#listItem","position":3,"name":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL","previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/devops\/#listItem","name":"DevOps"}}]},{"@type":"Organization","@id":"https:\/\/jrtx.com.br\/blog\/#organization","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","url":"https:\/\/jrtx.com.br\/blog\/","telephone":"+552138277513","logo":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#organizationLogo","width":100,"height":75},"image":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=61590814880509","https:\/\/www.instagram.com\/jrtx.tech\/"]},{"@type":"Person","@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author","url":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/","name":"Thiago Paes Rodrigues","image":{"@type":"ImageObject","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#authorImage","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/09\/cropped-foto-rascunho3-96x96.jpeg","width":96,"height":96,"caption":"Thiago Paes Rodrigues"}},{"@type":"WebPage","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#webpage","url":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/","name":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL - BLOG - JRT Technology Solutions","description":"Nesta aula do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar um dos pilares mais cr\u00edticos da administra\u00e7\u00e3o de bancos de dados: o gerenciamento de usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que roles representam tanto usu\u00e1rios de login quanto grupos de privil\u00e9gios,","inLanguage":"pt-BR","isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#breadcrumblist"},"author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"creator":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/08\/ai-image-1786915236851.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#mainImage","width":1440,"height":1024,"caption":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL"},"primaryImageOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/#mainImage"},"datePublished":"2026-08-16T18:20:42-03:00","dateModified":"2026-08-16T18:20:42-03:00"},{"@type":"WebSite","@id":"https:\/\/jrtx.com.br\/blog\/#website","url":"https:\/\/jrtx.com.br\/blog\/","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","alternateName":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","inLanguage":"pt-BR","publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","og:type":"article","og:title":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL - BLOG - JRT Technology Solutions","og:description":"Nesta aula do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar um dos pilares mais cr\u00edticos da administra\u00e7\u00e3o de bancos de dados: o gerenciamento de usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que roles representam tanto usu\u00e1rios de login quanto grupos de privil\u00e9gios,","og:url":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/","og:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:secure_url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:width":100,"og:image:height":75,"article:published_time":"2026-08-16T21:20:42+00:00","article:modified_time":"2026-08-16T21:20:42+00:00","article:publisher":"https:\/\/www.facebook.com\/profile.php?id=61590814880509","twitter:card":"summary_large_image","twitter:title":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL - BLOG - JRT Technology Solutions","twitter:description":"Nesta aula do curso PostgreSQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar um dos pilares mais cr\u00edticos da administra\u00e7\u00e3o de bancos de dados: o gerenciamento de usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL. Diferentemente de outros SGBDs, o PostgreSQL adota um modelo unificado em que roles representam tanto usu\u00e1rios de login quanto grupos de privil\u00e9gios,","twitter:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg"},"aioseo_meta_data":{"post_id":"2285","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-08-16 21:26:37","updated":"2026-08-16 21:26:37","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\/category\/devops\/\" title=\"DevOps\">DevOps<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tAula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/jrtx.com.br\/blog"},{"label":"DevOps","link":"https:\/\/jrtx.com.br\/blog\/category\/devops\/"},{"label":"Aula 20: Usu\u00e1rios, roles e permiss\u00f5es no PostgreSQL","link":"https:\/\/jrtx.com.br\/blog\/2026\/08\/16\/aula-20-usuarios-roles-e-permissoes-no-postgresql\/"}],"_links":{"self":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/2285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/comments?post=2285"}],"version-history":[{"count":0,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/2285\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media\/2284"}],"wp:attachment":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}