CREATE USER [usuário] WITH PASSWORD 'minha-senha';
CREATE DATABASE [bd] OWNER [usuário] ENCODING 'UTF8'; ALTER SCHEMA public OWNER TO [usuário];
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];
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];
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;
REASSIGN OWNED BY usuárioA TO usuárioB;
Reatribui todos os objetos que eram propriedade do usuárioA para o usuárioB.
DROP OWNED BY usuárioA;
Retira o onwership de usuárioA em todos os objetos do banco.
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