Архив автора: xinferum

PostgreSQL выполнение запросов к нескольким базам

В PostgreSQL не существует способа создать запрос к базам данных отличным от текущей (https://wiki.postgresql.org/), но выполнять запросы между базами возможно при помощи расширения dblink (https://www.postgresql.org/docs/9.6/static/dblink.html).

Читать далее

0

Удалить (merge) снимки виртуальной машины Hyper-V при помощи PowerShell

Иногда требуется удалить (смержить) снимок виртуальной машины Hyper-V (например, чтобы ее можно было забекапить), но выполнить это из консоли управления Hyper-V не удается. В таком случае, необходимо выполнить команду в PowerShell:
Get-VMSnapshot -VMName vm_name | Remove-VMSnapshot
0

Роли PostgreSQL

Роли PostgreSQL не связаны с пользователями ОС. Пользователи и группы PostgreSQL являются ролями (т.е. являются подмножествами множества “Роли”) — эти сущности устарели, но оставлены для обратной совместимости.
Пользователь — роль с правом входа:
create role rolename login;
или
create role rolename;
Группа — роль без права входа:
create role rolename;
Роль можно включать в другую роль (группу):
role1: grant group to role2;
role1->role2
Исключить из группы:
role1: revoke group from role2;

Права на управление участием в групповых ролях:

  • superuser — в любой
  • createrole — все кроме superuser

Есть возможность передачи прав на управление включением ролей в группу.
Информация о ролях в кластере:

select * from pg_roles;
или
\du
или
\du+
0

Настройки аутентификации пользователя postgres в PostgreSQL по паролю

Аутентификация клиентов управляется конфигурационным файлом, который традиционно называется pg_hba.conf и расположен в каталоге с данными кластера базы данных.
По умолчанию для локального пользователя postgres установлена аутентификация peer (более подробно в документации https://postgrespro.ru/docs/postgrespro/9.6/auth-pg-hba-conf).
Поэтому, для подключения к серверу переключаемся в консоли на пользователя postgres:
sudo su — postgres
Подключаемся к серверу:
psql
Чтобы задать пароль пользователю postgres выполняем в консоли postgres запрос:
alter user postgres encrypted password 'new_password';

Для того чтобы переключить аутентификацию пользователя postgres в режим по паролю (т.к. пароль у него теперь задан) редактируем файл pg_hba.conf:

sudo nano /etc/postgresql/9.6/main/pg_hba.conf

Находим в нем строку:
local all postgres peer
И меняем peer на md5. Сохраняем конфигурационный файл.
Чтобы применить изменения в конфигурации сервера без его рестарта то используется команда:
sudo service postgresql reload
Использование этой команды не приведет к прерыванию любых активных запросов или подключений к базе данных.
Того же эффекта можно достичь выполнив запрос SQL на сервере:
SELECT pg_reload_conf();
После выполнения команды подключимся снова к серверу (из сеанса любого пользователя (чтобы выйти из сеанса пользователя postgres нужно в консоли ввести exit и нажать Enter)):
psql -U postgres
После ввода пароля мы подключимся к серверу БД. Для проверки можно выполнить запрос:
SELECT version();
0

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

Для смены пароля пользователя в Linux, необходимо выполнить в Терминале (или консоли) следующую команду:
passwd
После ввода этой команды, система потребует от вас корректно и дважды ввести ваш новый пароль. Если вы хотите сменить пароль другого пользователя, вам необходимы права суперпользователя root. Если вы наделены такими правами, то выполните в терминале:
sudo bash
И введите пароль суперпользователя root (о переходе в режим суперпользователя будет свидетельствовать знак «#» вместо привычного для вас знака «$»). И, затем, выполните команду:
passwd имя_пользователя
Где имя_пользователя — логин пользователя, которому вы меняете пароль. Система опять же потребует от вас корректно и дважды ввести новый пароль.
0

Настройка бекапа PostgreSQL в Ubuntu Server при помощи pgBackRest с копированием на Windows Share

Настройка доступа из Linux к сетевой шаре бекапного сервера Windows:

Источник: https://www.hippolab.ru/kak-podklyuchit-setevoy-disk-windows-v-linux

Читать далее
0

PostgreSQL Узнать дату и время последнего CHECKPOINT

В PostgreSQL узнать дату и время последнего CHECKPOINT можно выполнив на сервере команду:

pg_controldata /path/to/pgdata

Например:

/usr/pgsql-9.6/bin/pg_controldata /var/lib/pgsql/9.6/data/

Ответ будет вида:

pg_control version number:            960
Catalog version number:               201608131
Database system identifier:           6522699450602703438
Database cluster state:               in production
pg_control last modified:             Tue 04 Sep 2018 10:40:05 AM MSK
Latest checkpoint location:           1/16315950
Prior checkpoint location:            1/1630E4E0
Latest checkpoint's REDO location:    1/16314968
Latest checkpoint's REDO WAL file:    000000010000000100000016
Latest checkpoint's TimeLineID:       1
Latest checkpoint's PrevTimeLineID:   1
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID:          0:2535686
Latest checkpoint's NextOID:          49176
Latest checkpoint's NextMultiXactId:  108
Latest checkpoint's NextMultiOffset:  222
Latest checkpoint's oldestXID:        1750
Latest checkpoint's oldestXID's DB:   1
Latest checkpoint's oldestActiveXID:  2535686
Latest checkpoint's oldestMultiXid:   1
Latest checkpoint's oldestMulti's DB: 1
Latest checkpoint's oldestCommitTsXid:0
Latest checkpoint's newestCommitTsXid:0
Time of latest checkpoint:            Tue 04 Sep 2018 10:40:04 AM MSK
Fake LSN counter for unlogged rels:   0/1
Minimum recovery ending location:     0/0
Min recovery ending loc's timeline:   0
Backup start location:                0/0
Backup end location:                  0/0
End-of-backup record required:        no
wal_level setting:                    replica
wal_log_hints setting:                on
max_connections setting:              200
max_worker_processes setting:         8
max_prepared_xacts setting:           0
max_locks_per_xact setting:           64
track_commit_timestamp setting:       off
Maximum data alignment:               8
Database block size:                  8192
Blocks per segment of large relation: 131072
WAL block size:                       8192
Bytes per WAL segment:                16777216
Maximum length of identifiers:        64
Maximum columns in an index:          32
Maximum size of a TOAST chunk:        1996
Size of a large-object chunk:         2048
Date/time type storage:               64-bit integers
Float4 argument passing:              by value
Float8 argument passing:              by value
Data page checksum version:           0

Нас интересует пункт Time of latest checkpoint.

0

PostgreSQL Создание пользователя и выдача ему полных прав на БД

Для того, чтобы создать пользователя (роль) и выдать ему полные права на конкретную бд, подключаемся к серверу PostgreSQL и выполняем запросы:

CREATE USER "i.ivanov" WITH ENCRYPTED PASSWORD 'megapass';
GRANT ALL PRIVILEGES ON DATABASE DatabaseName TO "i.ivanov";
0