Skip to content

Instantly share code, notes, and snippets.

@eduardo-matos
Last active August 29, 2015 14:05
Show Gist options
  • Select an option

  • Save eduardo-matos/d37b67aec8271926eb6c to your computer and use it in GitHub Desktop.

Select an option

Save eduardo-matos/d37b67aec8271926eb6c to your computer and use it in GitHub Desktop.
Anotações sobre PostgreSQL
# listar bancos de dados
\list
# passa a usar o banco
\c <banco>
# sair do prompt
\q
# mostrar todas as tabelas
\dt
# descrever tabela
\d+ <tabela>
# mostrar usuários
\du
# habilitar output horizontal
\x on
# definir senha para usuário
\password <user>
# criar usuário
CREATE USER <user>
# criar papel
# 'role' e 'user' são dois lados da mesma moeda. a qualquer momento podemos transformar usuários em papéis e vice-versa.
# papéis normalmente atuam como um container de privilégios, de onde usuários podem herdá-los.
# na prática, a diferença entre os dois é que usuários podem fazer login, enquanto papéis não.
# papel com senha = usuário
# usuário sem senha = papel
CREATE ROLE <role>
# converte 'role' para 'user'
ALTER ROLE myrole LOGIN
# converte 'user' para 'role'
ALTER ROLE myrole NOLOGIN
# == CREATE ROLE
CREATE GROUP workers
# mudar o dono de um banco de dados
# donos de bancos de dados natualmente têm privilégios para dropar objectos e mudar sua definição,
# e esses privilégios NÃO podem ser concedidos a outros usuários.
ALTER DATABASE <database> OWNER TO <role>
# Limitar acesso de usuário ao banco de dados
REVOKE CONNECT ON DATABASE <database> FROM PUBLIC;
REVOKE CONNECT ON DATABASE <database> FROM <user>;
GRANT CONNECT ON DATABASE <database> TO <user>;
# Limitar controle de operações de usuário nas tabelas de um banco de dados.
# É necessário antes fazer login nesse banco de dados.
# Assume-se que existe somente o schema public nesse banco de dados.
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM PUBLIC;
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM <user>;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO <user>;
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO <user>; # important to allow creating sequences
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment