запроса. Select inet_server_addr() работает. Но он всегда будет правильно выдавать айпи адрес? В Гугле у некоторых выдает 127.0.0.1. Может есть другой способ?
публичный адрес сервера?
В общем случае никак.
Да. Типо 192.168.88.88
это локальная подсеть
Имею ввиду адрес из локалки
"а зачем?"
да дерните из БД сторонний сервис по HTTP
тогда можно получить внешний ип прокси сервера или ноды кубера например.
Нужно узнать клиент обращается из сервера или из другой машины
вы хотите сравнивать его с pg_stat_activity.client_addr ?
Нет. Универсального способа получить адрес своего сервера вообще не существует. Независимо от постгреса, вот просто пишэшь свой сервер — и все методы получения адреса иногда ошыбаются.
А можно узнать, запрос выполнен из клиента или из самого сервера?
А что вы понимаете под "самим сервером"?
Есть сервер где лежит бд. Есть приложение через которое работаю с этой базой. Мне нужно узнать, приложение запущено на сервере или на другой машине.
Запущено. Достоверно нельзя — всегда можэт быть баунсер или nat в процэссе. Если и то и другое исключить — то можно перечислить все адреса сервера и сравнить их с клиентским. Только вы всё равно делаете что-то не то.
Я на самом деле не сам это придумал, такое решение уже было на ms sql, сейчас переделываю под постгрескл
Ну, всё сложно, лучшэ раскидайте по разным пользователям, действительно.
Обсуждают сегодня