Consultando usuários de um banco PostgreSQL

Consultando todos os usuários de um banco PostgreSQL

SELECT usename AS role_name,
  CASE 
     WHEN usesuper AND usecreatedb THEN 
       CAST('superuser, create database' AS pg_catalog.text)
     WHEN usesuper THEN 
        CAST('superuser' AS pg_catalog.text)
     WHEN usecreatedb THEN 
        CAST('create database' AS pg_catalog.text)
     ELSE 
        CAST('' AS pg_catalog.text)
  END role_attributes
FROM pg_catalog.pg_user
ORDER BY role_name desc;

Listando Usuários e Grupos:

SELECT groname,usename from pg_group,pg_user where usesysid = any(grolist);

Listando Usuários e seus Schemas

select nspname,tablename from pg_tables, pg_namespace where nspname not similar
to '%(pg_|information_schema)%' and nspname = schemaname;

 

Turnkey Linux – Access denied for user ‘root’@’localhost’

Se você estiver utilizando algum Appliance da TurnKey GNU/Linux 15.0 que venha com banco de dados MySQL, saiba que o banco que vem por padrão é o MariaDB e isso é ótimo!

Distributor ID: TurnKey
Description: TurnKey GNU/Linux 9.5 (stretch)
Release: 9.5
Codename: stretch

Algo que tem ocorrido com essa versão do Appliance é que o acesso ao TurnKey Linux Database Administration Console – Powered by Adminer   – (https://IP:12322), é não permitir o login com usuário root e senha definida na instalação, exibindo o erro:

Access denied for user ‘root’@’localhost’

Para resolver isso o procedimento é simples:

# mysql -u root -p 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use mysql;
MariaDB [(none)]> update user set password=PASSWORD('INFORME_A_SENHA') where User='root';
MariaDB [(none)]> update user set plugin='' where User='root';
MariaDB [(none)]> flush privileges; 
MariaDB [(none)]> quit;

# /etc/init.d/mysql restart

Lembrando que esse não é um erro, mas uma modificação na imagem Turnkey Linux na versão 9.5. O acesso ao banco de dados MySQL/MariaDB pode ser feito normalmente pelo usuário adminer e senha definida na instalação, sem necessidade de fazer essa alteração acima no console.

Exibir bancos, exibir tabelas, exibir colunas…

Para quem esta vindo do MySQL para o PostgreSQL não ficar perdido.

[sql]
mysql: SHOW TABLES
postgresql: \d
postgresql: SELECT table_name FROM information_schema.tables WHERE table_schema = ‘public’;

mysql: SHOW DATABASES
postgresql: \l
postgresql: SELECT datname FROM pg_database;

mysql: SHOW COLUMNS
postgresql: \d table
postgresql: SELECT column_name FROM information_schema.columns WHERE table_name =’table’;

mysql: DESCRIBE TABLE
postgresql: \d+ table
postgresql: SELECT column_name FROM information_schema.columns WHERE table_name =’table’;
[/sql]

Removendo espaços no início e fim de uma string.

Dica boba 🙂

Acontece muito quando se importa dados de uma planilha alguns dados apresentarem espaços no início ou no fim da string. Para remover é fácil, basta executar esta query:

UPDATE tabela set campo = trim(campo);

Agora caso queira remover somente espaços da direta ou da esquerda é só executar:

Lado esquerdo:
UPDATE tabela SET campo = LTRIM(campo);

Lado direito:
UPDATE tabela SET campo = RTRIM(campo);

Resetando a sequência em um campo Serial no PostgreSQL

1. Se você quiser preservar os dados, das demais tabelas e alterar somente a sequência:

SELECT setval(‘nome_da_sequencia’, 1, false);

Para saber o nome da sequência, pode-se executar este outro comando, antes:

SELECT pg_get_serial_sequence(‘nome_da_tabela’,’nome_do_campo_serial’);

2. Se você quiser apagar toda a tabela e resetar a sequência:

TRUNCATE TABLE nome_da_tabela
RESTART IDENTITY;