# Postgresql

Подключение:

```
psql 
	-U имя пользователя
	-W пароль
    -d имя базы
```

Сброс пароля пользователя: в файле pg\_dba.conf

**Установка pg\_dump pg\_restore**

```
sudo apt update && sudo apt upgrade
sudo apt install postgresql-client postgresql-client-common libpq-dev

pg_dump -h 127.0.0.1 -p 5437 -U dbuser -d dbname -F p > ~/tmpdb.sql
```

**Команды**

список пользователей

```postgresql
\du
SELECT usename, usesuper, usecreatedb FROM pg_catalog.pg_user;
```

создать пользователя

```postgresql
CREATE USER user_name WITH PASSWORD 'myPassword';
```

сменить пароль пользователя

```postgresql
ALTER USER user_name WITH PASSWORD 'new_password';
```

список баз данных

```
\l
SELECT datname FROM pg_database;
```

создать базу данных

```
CREATE DATABASE имя_БД;
drop database имя_БД
```

установить права пользователя на базу

```
GRANT ALL PRIVILEGES ON DATABASE database1 to dmosk;
```

список таблиц

```
\dt
```

**Восстановление базы данных**

```sql
CREATE DATABASE mainbase_restore WITH TEMPLATE template0 ENCODING 'UTF8';
-- Завершаем все подключения к mainbase
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'mainbase' AND pid <> pg_backend_pid();

-- 3. Переименовываем оригинальную базу в mainbase_old
ALTER DATABASE mainbase RENAME TO mainbase_old;

-- ❗ Также нужно завершить подключения к mainbase_restore, чтобы переименовать её
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'mainbase_restore' AND pid <> pg_backend_pid();

-- 4. Переименовываем восстановленную базу в mainbase
ALTER DATABASE mainbase_restore RENAME TO mainbase;
```