====== Permissões (PostgreSQL) ====== ===== Criar um usuário ===== CREATE USER [usuário] WITH PASSWORD 'minha-senha'; ===== Criar um banco ===== CREATE DATABASE [bd] OWNER [usuário] ENCODING 'UTF8'; ALTER SCHEMA public OWNER TO [usuário]; ===== Conceder todas as permissões a um BD ===== GRANT ALL PRIVILEGES ON DATABASE [bd] TO [usuário]; GRANT ALL ON ALL TABLES IN SCHEMA public TO [usuário]; GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO [usuário]; GRANT ALL ON ALL FUNCTIONS IN SCHEMA public TO [usuário]; Também é possível conceder permissões a outros schemas: GRANT ALL ON ALL TABLES IN SCHEMA [outro-schema] TO [usuário]; GRANT ALL ON ALL SEQUENCES IN SCHEMA [outro-schema] TO [usuário]; GRANT ALL ON ALL FUNCTIONS IN SCHEMA [outro-schema] TO [usuário]; ===== Revogar permissões ===== As sintaxes são semelhantes às do tópico anterior, para isso basta trocar a expressão ''GRANT'' por **REVOKE**: REVOKE ALL PRIVILEGES ON DATABASE [bd] FROM [usuário]; REVOKE ALL ON ALL TABLES IN SCHEMA public FROM [usuário]; REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM [usuário]; REVOKE ALL ON ALL FUNCTIONS IN SCHEMA public FROM [usuário]; ===== Conceder permissões de um usuário para outro ===== GRANT usuárioA TO usuárioB; O comando acima faz com que o **usuárioB** tenha as mesmas permissões do **usuárioA**. Útil quando um desenvolvedor precisa de acesso a um BD utilizando as permissões do usuário da aplicação. O **REVOKE** também é possível neste comando: REVOKE usuárioA FROM usuárioB; ===== Ownership ===== ==== Reatribuir ownership de todos os objetos do banco ==== REASSIGN OWNED BY usuárioA TO usuárioB; Reatribui todos os objetos que eram propriedade do **usuárioA** para o **usuárioB**. ==== Eliminar ownership de um usuário ==== DROP OWNED BY usuárioA; Retira o onwership de **usuárioA** em todos os objetos do banco. ===== Arquivo de permissão de acesso ===== Edite o arquivo ''/var/lib/pgsql/9.3/data/pg_hba.conf'' para dar permissão. host [banco] [usuário] [CIDR-da-rede] md5 Depois dê um reload no serviço. systemctl reload postgresql-9.3.service ===== Links interessantes ===== * **GRANT:** [[https://www.postgresql.org/docs/9.0/static/sql-grant.html]] * **REVOKE:** [[https://www.postgresql.org/docs/9.0/static/sql-revoke.html]] * **ALTER DEFAULT PRIVILEGES:** [[https://www.postgresql.org/docs/9.0/static/sql-alterdefaultprivileges.html]]