@pgsql

Страница 695 из 1062
Mike Chuguniy
01.03.2018
13:55:32
@itjunkie я вам таки настоятельно рекомендую открыть официальную документацию ПГ по команде CREATE DATABASE, чтобы не задавать подобных вопросов.

Она есть и на русском языке, благодаря компании Постгрес Профессиональный.

https://postgrespro.ru/docs/

Google
Mike Chuguniy
01.03.2018
13:58:51
Льоша! ЖЫзнь - боль и страдания, унижения и отчаяние! :D

Itjunky дзинь даос
01.03.2018
14:02:32
Сначала надо делать ДРОП ДАТАБАЗЕ, потом КРЕЭЙТ ДАТАБАЗЕ, а потом уже КРЕЭЙТ СХЕМА.
https://wiki.postgresql.org/wiki/First_steps Вот в этой доке, кстати, вообще нет создания базы. Поэтому я и не сообразил на каком этапе её лучше создавать

В мускуле это всё не имеет значения и ролей со схемами(как в постгре) там нет. Потому слегка палваю в этой части

После создания БД, строка подключения к ПГ должна выглядеть следующим образом: psql <DBNAME> -c "<COMMAND>" В противном случае вы все объекты создадите в БД по-умолчанию для пользователя, которым подключаетесь (postgres)
Что-то пока не помогло =( Последовательность сейчас такая: sudo -u postgres psql -c "CREATE USER ${USER} PASSWORD '${PASS}';" sudo -u postgres psql -c "ALTER USER ${USER} WITH ENCRYPTED PASSWORD '${PASS}';" sudo -u postgres psql -c "DROP DATABASE ${DB};" sudo -u postgres psql -c "CREATE DATABASE ${DB};" sudo -u postgres psql -d ${DB} -c "CREATE SCHEMA ${DB};" sudo -u postgres psql -d ${DB} -c "GRANT ALL ON SCHEMA ${DB} TO ${USER}" sudo -u postgres psql -d ${DB} -c "GRANT ALL ON ALL TABLES IN SCHEMA ${DB} TO ${USER}" То есть и дропы и криэйты в нужном порядке и после создания базы, явно указываю её в каждой команде, но в результате всёравно получаю FATAL: password authentication failed for user "visyond"

Mike Chuguniy
01.03.2018
14:28:03
ALTER USER - лишнее

Itjunky дзинь даос
01.03.2018
14:29:04
ALTER USER - лишнее
Насколько я понимаю, хоть и лишнее, но не ломающее ничего, а просто дублирующее команду создания, в части установки пароля.

Рустамыч
01.03.2018
14:29:23
alter user visyond login ;

Mike Chuguniy
01.03.2018
14:30:29
@root_gentoo CREATE USER отличается от CREATE ROLE тем, что как раз устанавливает привилегию LOGIN для создаваемого пользователя

Itjunky дзинь даос
01.03.2018
14:31:14
alter user visyond login ;
https://postgrespro.ru/docs/postgresql/9.6/sql-alteruser Чот нифига нету тут про этот логин =(

Mike Chuguniy
01.03.2018
14:31:47
Т.е. там чегой-то то ли в pg_hba.conf, то ли таки ALTER USER лишнее.

Хотя насчёт pg_hba.conf я могу и неправым быть.

Google
Рустамыч
01.03.2018
14:32:14
в pg_hba.conf порядок тоже важен.

Itjunky дзинь даос
01.03.2018
14:32:50
В хба в конец вставляю строку local all visyond md5

в pg_hba.conf порядок тоже важен.
Один важный момент. Как только выполняю альтер юзер в консоли руками, меня начинает пускать.

Рустамыч
01.03.2018
14:33:44
В хба в конец вставляю строку local all visyond md5
в логе должна быть стока под которую попадает запрос .

можешь в личку ))

Alexander
01.03.2018
14:41:27
в pg_hba.conf порядок тоже важен.
Да, сверху вниз читается. И если по одному из условий коннект проходит, оставшиеся не рассматриваются, даже в случае неудачи подключения по выбранной строке.

Itjunky дзинь даос
01.03.2018
14:41:57
покажи весь pg_hba.conf
root@check-restore-backup-1:~# grep -vE "^#|^$" /etc/postgresql/9.6/main/pg_hba.conf local all postgres peer local all all peer host all all 127.0.0.1/32 md5 host all all ::1/128 md5 local all visyond md5

Рустамыч
01.03.2018
14:42:19
возможно из за нее

попробуй закомментируй ее, если это не прод конечно и ты ни чего не поломаешь )))

а луше local all visyond md5 на самый вверх поставь

Daniel
01.03.2018
14:46:00
ещё можно так: в строке local all visyond md5 заменить all на конкретное название БД и вставить эту строку выше, чем local all all peer

Рустамыч
01.03.2018
14:46:40
Itjunky дзинь даос
01.03.2018
14:55:15
в pg_hba.conf порядок тоже важен.
Похоже именно в этом и было дело. Перенёс в начало строку разрешения и после перезапуска постгри начало пускать.

Itjunky дзинь даос
01.03.2018
14:55:55
Теперь вопрос, как скриптом всунуть строку в середину? =) Кроме седа на одноу из закоменченных строк в голову ничего пока не приходит.

Рустамыч
01.03.2018
14:57:26
делаешь grep -n тем самым вычисляешь строку а потом sed в это место вставляешь - это один из способов

Itjunky дзинь даос
01.03.2018
14:57:38
согласен, если на все базы доступ не нужен, то лучше указать конкретную
В моём случае в принципе и под рутом можно было бы работать, поскольку это тестовая виртуалка живущая не более получаса и проверяющая корректность восстановления из бэкапов.

Google
Itjunky дзинь даос
01.03.2018
14:58:00
делаешь grep -n тем самым вычисляешь строку а потом sed в это место вставляешь - это один из способов
Ну это если надо заменить строку, а мне то надо вставить новую в середину.

Рустамыч
01.03.2018
15:01:28
можно седом и вставить

Mike Chuguniy
01.03.2018
15:12:00
Itjunky дзинь даос
01.03.2018
15:14:29
Гугл такое подсказал sed -i '1s/^/task goes here\n/' todo.txt Как я понимаю, он 1 раз делает замену начала строки на нужный текст. А если первая строка не пуста? А ну да, там последний символ /n

Mike Chuguniy
01.03.2018
15:21:01
Я же сказал: man sed на append. А не гугель на замену!

Itjunky дзинь даос
01.03.2018
15:21:38
Я же сказал: man sed на append. А не гугель на замену!
Гугл у меня был не на замену а на инсёрт строки

Mike Chuguniy
01.03.2018
15:26:03
Выкиньте такой гугель. Вот ответ правильного гугля на sed append line, первая же ссылка (кстати, после набора app дальнейшее - автодополнение): http://www.yourownlinux.com/2015/04/sed-command-in-linux-append-and-insert-lines-to-file.html

Синтакс: sed 'N a <LINE-TO-BE-ADDED>' FILE.txt

Vladimir
01.03.2018
15:42:15
Ребят, Pgadmin3 многие юзают?

Ilya
01.03.2018
15:43:47
конечно

Vladimir
01.03.2018
15:44:49
Можете затестить? Есть ли у вас такой "баг"/фича https://toster.ru/q/507261

Vadim
01.03.2018
15:47:32
ребят как контекст сменить в которой запрос выполнять?

при помощи sql, типа use database

Evgeniy
01.03.2018
15:48:02
\c database

Vadim
01.03.2018
15:48:50
\c database
спасибо, не то

Evgeniy
01.03.2018
15:49:18
а, ты хочешь из процедурки типа?

Vadim
01.03.2018
15:49:25
типо перед запросом

Evgeniy
01.03.2018
15:49:44
думаю что не выйдет

Vadim
01.03.2018
15:51:09
типо чтобы create database, потом create extension в этой бд уложить рядом

Данил
01.03.2018
15:54:18
ребзя всем привет, вот хоть убей не понимаю как работает запрос, может кто растолкует? select a.* from emp a where a.salary = ( select max(salary) from emp b where b.dep_id = a.dep_id ) мне единственное что пришло в голову сделать это через партиции, но там в случае одинаковой зарплаты оба будут выведены

Google
Данил
01.03.2018
15:57:10
к чему приравнивается a.salary

какие данные где появляются в процессе выполнения

ну короче сам бы я такое никогда не написал, я вот как замутил: select * from ( select id, dep_id, chief, name, salary, rank() over (partition by dep_id order by salary desc) as a from emp ) as b where a = 1

Evgeniy
01.03.2018
16:03:44
уж лучше "дистинкт он" сделать

Данил
01.03.2018
16:03:54
уж лучше "дистинкт он" сделать
покаж запрос если не трудно плиз

Evgeniy
01.03.2018
16:04:31
select distinct on (dept, salary) a.* from emp order by salary

вроде

ща посмотрю доку

Данил
01.03.2018
16:05:15
Evgeniy
01.03.2018
16:05:20
order by dept, salary desc

у меня мс)
норм ты в чят зашел, с козырей

Данил
01.03.2018
16:05:49
=))0

Itjunky дзинь даос
01.03.2018
16:06:12
у меня мс)
Сочувствую

Данил
01.03.2018
16:06:17
ну щас негде оперативно поднять виртуалку с постгресом)

Сочувствую
работа такая работа

Itjunky дзинь даос
01.03.2018
16:06:37
Работу выбирают, если чо

Данил
01.03.2018
16:07:17
выводит строки с максимальным salary если несколько с одинаковым salary
не, что делает запрос я понимаю, а как он это делает

Google
Данил
01.03.2018
16:07:19
и почему

ros
01.03.2018
16:08:17
в подзапросе убрать where b.dep_id = a.dep_id и будет тот же результат

Vladimir
01.03.2018
16:09:11
Что значит как делает? Погугли коррелированный подзапрос

ros
01.03.2018
16:09:46
это не очень удачный пример для таких запросов

Evgeniy
01.03.2018
16:11:01
не, что делает запрос я понимаю, а как он это делает
ну представь что он берет вторую табличку emp, выстраивает ее по приницу dept, max_salary потом берет первую табличку и джойнит по dept

чо тут такого

Evgeniy
01.03.2018
16:14:36
ну там написано from emp b

b это вторая табличка

Данил
01.03.2018
16:14:51
и какая она будет?



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

Evgeniy
01.03.2018
16:16:09
а, я тебя обманул

когда мы для каждого департамента нашли макс салари

мы потом джойним первую табличку по зарплате и берем строку что сматчилась еще

ну пофантазируй как бы ты делал на питоне!

Vladimir
01.03.2018
16:17:02
что значит вторую?
Чел, твой вопрос гуглится на раз. Не мучай людей http://www.hardline.ru/2/13/305/645-6.html

Данил
01.03.2018
16:17:11
мне подсказали щас как: циклом идем по а, для каждого смотрим макс(зп) из деп в б, и если ок то выводит

Evgeniy
01.03.2018
16:17:21
ну да

Данил
01.03.2018
16:18:11

Страница 695 из 1062