заметки об администрировании и программировании (python, ruby, php). Траблшутинг в «примерах» и HOWTO.

😎 О себе | 📚 Литература и ресурсы | ⚡ Все посты | 📮 E-mail
6 заметок с тегом

PostgreSQL

Kubernetes: Postgresql открыть порт на NGINX-Ingress


apiVersion: v1
kind: Service
metadata:
  labels:
    app: postgres-container
    tier: backend
  name: postgres
spec:
  ports:
  - port: 5432
    protocol: TCP
  selector:
    app: postgres
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-tutorial
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: my_kube.info
    http:
      paths:
      - path: /
        backend:
          serviceName: postgres-container
          servicePort: 5432


https://stackoverflow.com/a/50197893

 Нет комментариев    70   2 мес   Kubernetes   nginx   nginx-ingress   PostgreSQL

PostgreSQL: Изменить владельца таблиц в БД

После разворачивания дампа БД от другого пользователя, потребовалось скорректировать права на таблицы в БД. Быстрый поиск выдал статейку от утилты TablePlus. Отработало идеально, поэтому забираю к себе в заметки, вдруг еше понадобится.

Tables:


for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" bdname` ; do  psql -c "alter table \"$tbl\" OWNER to NEWOWNER" DBNAME ; done


Sequences:


for tbl in `psql -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" dbname` ; do  psql -c "alter table \"$tbl\" OWNER to NEWOWNER" DBNAME ; done


Views:


for tbl in `psql -qAt -c "select table_name from information_schema.views where table_schema = 'public';" dbname` ; do  psql -c "alter table \"$tbl\" OWNER to NEWOWNER" DBNAME ; done


DBNAME — имя БД
OWNER — текущий владелец таблиц в БД
NEWOWNER — новый владелец таблиц в БД

Источник

 Нет комментариев    85   2 мес   bash   database   owner   PostgreSQL   tables

Создание пользователя PostgreSQL с правами Read Only

Создание пользователя PostgreSQL с правами Read Only

Для доступа к одной из баз данных, потребовалось создать пользователя с правами readonly, решение для PostgreSQL 9.6+ было найдено на stackoverflow


CREATE USER Read_Only_User  WITH ENCRYPTED PASSWORD 'STRONG_PASSWORD';
GRANT USAGE ON SCHEMA public to Read_Only_User;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO Read_Only_User;

GRANT CONNECT ON DATABASE DATABASE_TO_READ to Read_Only_User;

\c DATABASE_TO_READ

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO Read_Only_User;
GRANT USAGE ON SCHEMA public to Read_Only_User; 
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO Read_Only_User;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO Read_Only_User;


DATABASE_TO_READ — база данных, куда нужно дать доступ на чтение
Read_Only_User — пользователь используемый для доступа
STRONG_PASSWORD — пароль пользователя Read_Only_User
Источник

 Нет комментариев    41   3 мес   PostgreSQL   SQL

ERROR: database «database» is being accessed by other users

ERROR:  database "database" is being accessed by other users

При удалении БД в PostgreSQL, если открыто соединение — будем получать следующую ошибку:


postgres=# drop database database;
ERROR:  database "database" is being accessed by other users
DETAIL:  There is 1 other session using the database.


Чтобы удалить БД завершаем соединение (вариант попробовать перезапустить сервер, если можно, да и у меня даже после этого БД не отпустило) с помощью запроса ниже от суперпользователя и дропаем БД


SELECT 
    pg_terminate_backend(pid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    pid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;


где database_name имя БД

 Нет комментариев    62   4 мес   database   drop   Error   PostgreSQL   SQL
 Нет комментариев    34   7 мес   PostgreSQL   SQL

Создание пользователя, его пароля и базы данных в PostgreSQL

От пользователя postgres открываем утилиту psql


sudo -u postgres psql


И выполняем следующие запросы


CREATE DATABASE yourdbname;
CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass';
GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser;


где:

yourdbname — имя создаваемой БД
youruser — имя создаваемого пользователя
yourpass — пароль пользователя

 Нет комментариев    398   2018   PostgreSQL