Size: a a a

pgsql – PostgreSQL

2020 August 08

A

Alex in pgsql – PostgreSQL
Сергей Голод
это зависит от вашего сервера ПГ и ваших баз
включая зависимость от сервера ПГ, сервера приложения, пропускной способности сети (если это отедльные сервера), схемы таблиц, но не ограничиваясь ими.
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Максим
А сколько по времени выполняется функция в 50 строк, если надо выбрать из 5 таблиц и вставить , в которых по 10000записей
что мешает параллельно открыть 10 соединений и в рамках каждого выполнить требуемые запросы? запросы независимы друг от друга?
источник

Д

Даниил in pgsql – PostgreSQL
Ребят подскажите плз, не мастер пг )
Допустим у меня есть запрос:
WITH 
    a as (SELECT 1 as n),
    b as (SELECT 2 as n)
SELECT n FROM b;

Будем ли у меня исполняться запрос из А?
источник

2_

2flower _ in pgsql – PostgreSQL
Даниил
Ребят подскажите плз, не мастер пг )
Допустим у меня есть запрос:
WITH 
    a as (SELECT 1 as n),
    b as (SELECT 2 as n)
SELECT n FROM b;

Будем ли у меня исполняться запрос из А?
в 9.6 например
CTE Scan on b (cost=0.01..0.03 rows=1 width=4) (actual time=0.003..0.003 rows=1 loops=1)
CTE b
-> Result (cost=0.00..0.01 rows=1 width=4) (actual time=0.000..0.000 rows=1 loops=1)
Planning time: 0.025 ms
Execution time: 0.023 ms
источник

Д

Даниил in pgsql – PostgreSQL
Спасибо, значит не будет. Совсем забыл про EXPLAIN )
источник

A

Akhan in pgsql – PostgreSQL
Ребят тушение базы это просто pgctl stop?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Akhan
Ребят тушение базы это просто pgctl stop?
В vanilla да. А так — в дистрибутиве могут быть свои "обёртки", как pg_ctlcluster в PGDG для Debian/Ubuntu, например.
источник

YJ

Young George Jellyfi... in pgsql – PostgreSQL
Подскажите пожалуйста

Дал пользователю права только на одну базу, а при подключении через DataGrip видно другие базы (хотя просмотреть саму бд не даёт), видно базу Postgres (в том числе есть возможность чтения) и видны роли (и пользователи)

Как сделать так, чтобы пользователь не видел «чужие» БД, на которые у него нет прав?

И возможно ли у пользователя забрать возможность отображения и чтения базы postgres и возможность скрыть от него других пользователей?
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Young George Jellyfish
Подскажите пожалуйста

Дал пользователю права только на одну базу, а при подключении через DataGrip видно другие базы (хотя просмотреть саму бд не даёт), видно базу Postgres (в том числе есть возможность чтения) и видны роли (и пользователи)

Как сделать так, чтобы пользователь не видел «чужие» БД, на которые у него нет прав?

И возможно ли у пользователя забрать возможность отображения и чтения базы postgres и возможность скрыть от него других пользователей?
Скрыть список баз нельзя. Отобрать читать - REVOKE ALL FROM  PUBLIC. На каждой БД.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Михаил Шурутов
Скрыть список баз нельзя. Отобрать читать - REVOKE ALL FROM  PUBLIC. На каждой БД.
А вот писали, что можно... https://t.me/pgsql/234000
Но лично я только "потыкался" немного — вроде, никаких очевидных дефектов от этого нет...
Каким-то GUI-клиентам "не понравится", наверное (которые список баз ожидают получить без проблем).
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Yaroslav Schekin
А вот писали, что можно... https://t.me/pgsql/234000
Но лично я только "потыкался" немного — вроде, никаких очевидных дефектов от этого нет...
Каким-то GUI-клиентам "не понравится", наверное (которые список баз ожидают получить без проблем).
Права у PUBLIC оторвать. На что, вопрос, однако.
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Например npgsql любит подключаться к template1 ... И пожалуй если он бд не увидит - будет ругаться
источник

YJ

Young George Jellyfi... in pgsql – PostgreSQL
Михаил Шурутов
Скрыть список баз нельзя. Отобрать читать - REVOKE ALL FROM  PUBLIC. На каждой БД.
а роли возможно скрыть?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Михаил Шурутов
Права у PUBLIC оторвать. На что, вопрос, однако.
На pg_database (там же написано чуть ниже).
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Аггей Лоскутников
Например npgsql любит подключаться к template1 ... И пожалуй если он бд не увидит - будет ругаться
источник

А

Алексей in pgsql – PostgreSQL
2flower _
select * from tbl where user_id=... order by timestamp desc limit 1
Если юзеров несколько?
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Yaroslav Schekin
На pg_database (там же написано чуть ниже).
Причём во всех БД:
postgres@desktop ~ $ psql
psql (12.3)
Введите "help", чтобы получить справку.

postgres=# REVOKE ALL ON TABLE pg_catalog.pg_database FROM PUBLIC;
REVOKE
postgres=# \q
postgres@desktop ~ $ выход
mshurutov@desktop ~ $ psql
psql (12.3)
Введите "help", чтобы получить справку.

mshurutov@~ > \l
                                  Список баз данных
   Имя     | Владелец  | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права дост
упа    
------------+-----------+-----------+-------------+-------------+-----------------------
demo       | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
demo_small | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
fsync      | fsync     | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
homebuh    | homebuh   | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
mshurutov  | mshurutov | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
pgbench    | pgbench   | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
postgres   | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
template0  | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |           |           |             |             | postgres=CTc/postgres
template1  | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | postgres=CTc/postgres+
           |           |           |             |             | =c/postgres
test       | test      | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
vmail      | vmail     | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
(11 строк)

mshurutov@~ >


И что произойдёт, когда пользователь не сможет прочитать pg_database в своей собственной БД - я сказать не берусь.
ЗЫ.
mshurutov@~ > \c postgres
Вы подключены к базе данных "postgres" как пользователь "mshurutov".
mshurutov@postgres > \l
ОШИБКА:  нет доступа к таблице pg_database
mshurutov@postgres >
источник

2_

2flower _ in pgsql – PostgreSQL
Алексей
Если юзеров несколько?
тогда по другому.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Михаил Шурутов
Причём во всех БД:
postgres@desktop ~ $ psql
psql (12.3)
Введите "help", чтобы получить справку.

postgres=# REVOKE ALL ON TABLE pg_catalog.pg_database FROM PUBLIC;
REVOKE
postgres=# \q
postgres@desktop ~ $ выход
mshurutov@desktop ~ $ psql
psql (12.3)
Введите "help", чтобы получить справку.

mshurutov@~ > \l
                                  Список баз данных
   Имя     | Владелец  | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права дост
упа    
------------+-----------+-----------+-------------+-------------+-----------------------
demo       | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
demo_small | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
fsync      | fsync     | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
homebuh    | homebuh   | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
mshurutov  | mshurutov | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
pgbench    | pgbench   | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
postgres   | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
template0  | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |           |           |             |             | postgres=CTc/postgres
template1  | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | postgres=CTc/postgres+
           |           |           |             |             | =c/postgres
test       | test      | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
vmail      | vmail     | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
(11 строк)

mshurutov@~ >


И что произойдёт, когда пользователь не сможет прочитать pg_database в своей собственной БД - я сказать не берусь.
ЗЫ.
mshurutov@~ > \c postgres
Вы подключены к базе данных "postgres" как пользователь "mshurutov".
mshurutov@postgres > \l
ОШИБКА:  нет доступа к таблице pg_database
mshurutov@postgres >
Ну да, так всё и было, когда я пробовал.
Но ничего действительно критичного в этом нет, с виду.
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Михаил Шурутов
Причём во всех БД:
postgres@desktop ~ $ psql
psql (12.3)
Введите "help", чтобы получить справку.

postgres=# REVOKE ALL ON TABLE pg_catalog.pg_database FROM PUBLIC;
REVOKE
postgres=# \q
postgres@desktop ~ $ выход
mshurutov@desktop ~ $ psql
psql (12.3)
Введите "help", чтобы получить справку.

mshurutov@~ > \l
                                  Список баз данных
   Имя     | Владелец  | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права дост
упа    
------------+-----------+-----------+-------------+-------------+-----------------------
demo       | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
demo_small | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
fsync      | fsync     | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
homebuh    | homebuh   | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
mshurutov  | mshurutov | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
pgbench    | pgbench   | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
postgres   | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
template0  | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |           |           |             |             | postgres=CTc/postgres
template1  | postgres  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | postgres=CTc/postgres+
           |           |           |             |             | =c/postgres
test       | test      | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
vmail      | vmail     | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
(11 строк)

mshurutov@~ >


И что произойдёт, когда пользователь не сможет прочитать pg_database в своей собственной БД - я сказать не берусь.
ЗЫ.
mshurutov@~ > \c postgres
Вы подключены к базе данных "postgres" как пользователь "mshurutov".
mshurutov@postgres > \l
ОШИБКА:  нет доступа к таблице pg_database
mshurutov@postgres >
Вообще, подобные "забавы" с правами на таблицы системного каталога - это для сильных духом, кому делать нечего. :) Я же по ночам спать предпочитаю.
источник