# PostgreSQL CheatSheet
<div style="text-align: center">
<img src="https://upload.wikimedia.org/wikipedia/commons/2/29/Postgresql_elephant.svg" height="300" alt="PostgreSQL" />
</div>
<br />
> [TOC]
## Instalação
### Rocky Linux 9.2
```
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf -qy module disable postgresql
dnf install postgresql15-server
/usr/pgsql-15/bin/postgresql-15-setup initdb
systemctl --now enable postgresql-15
```
### Inicializar o banco de dados
```
/usr/pgsql-15/bin/postgresql-15-setup initdb
```
## Debian
```
apt update
apt upgrade --no-install-recommends --no-install-suggests -y
apt install postgresql
systemctl --now enable postgresql
```
## Uso
### Conectar ao banco de dados
```shell
su postgres -c psql
```
### Criar um usuário para um banco de dados
```sql
CREATE USER [SEU_USUARIO] WITH PASSWORD '[SUA_SENHA]';
```
### Criar um super-usuário
```sql
CREATE USER [SEU_USUARIO] WITH SUPERUSER PASSWORD '[SUA_SENHA]';
```
### Ou alterar um usuário para super-usuário
```sql
ALTER USER [SEU_USUARIO] WITH SUPERUSER;
```
### Criar um banco de dados
```sql
CREATE DATABASE [NOME_DO_BANCO];
```
ou
```sql
CREATE DATABASE [NOME_DO_BANCO] WITH OWNER [SEU_USUARIO];
```
### Adicionar permissões para um usuário a um determinado banco de dados
```sql
GRANT ALL ON DATABASE [NOME_DO_BANCO] TO [SEU_USUARIO];
ALTER DATABASE [NOME_DO_BANCO] OWNER TO [SEU_USUARIO];
```
### Adicionar permissões para um usuário criar bancos e roles
```sql
ALTER USER [SEU_USUARIO] CREATEDB CREATEROLE;
```
:::info
:bulb: Novo no PostgreSQL 15 e superiores. Fonte: [StackOverflow](https://stackoverflow.com/a/74111630/1844007 "StackOverflow").
:::
### Alterar senha de um usuário
```sql
ALTER USER [SEU_USUARIO] WITH PASSWORD 'NOVA_SENHA';
```
## Extras
### Liberar conexões remotas
/var/lib/pgsql/15/data/pg_hba.conf (Rocky)
/etc/postgresql/15/main/pg_hba.conf (Debian)
```
# IPv4 local connections:
host all all 0.0.0.0/0 md5
```
/var/lib/pgsql/15/data/postgresql.conf (Rocky)
/etc/postgresql/15/main/postgresql.conf (Debian)
```
# - Connection Settings -
listen_addresses = '*'
```
> Fonte: [StackOverflow](https://stackoverflow.com/a/18580598/1844007)
## Referências
- [PostgreSQL Tutorial](https://www.postgresqltutorial.com/postgresql-cheat-sheet/)
- [TimeScale](https://www.timescale.com/learn/postgres-cheat-sheet/databases)
- [Digital Ocean](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-rocky-linux-9)
- [Prisma](https://www.prisma.io/dataguide/postgresql/connecting-to-postgresql-databases)
- [StackOverflow](https://stackoverflow.com/a/74111630/1844007)