Найдите имя хоста и порт с помощью команд PSQL

161

У меня работает PSQL, и я пытаюсь подключить приложение Perl к базе данных. Есть ли команда для поиска текущего порта и хоста, на котором работает база данных?

джамесатха
источник

Ответы:

64

Порт PostgreSQL по умолчанию - 5432. Хост, на котором работает база данных, должен был быть предоставлен вашим хостинг-провайдером; Я предполагаю, что это будет тот же хост, что и веб-сервер, если он не указан. Обычно это настраивается как localhost, если ваш веб-сервер и сервер базы данных находятся на одном хосте.

Брэд Кох
источник
Я тоже столкнулся с этой проблемой и пробовал порт 5433, и это работает
Джонни Мановар
16
На самом деле это не отвечает на вопрос.
sk
1
@sk Прочтите контекст. OP не знал хост и порт для своей базы данных postgres. Они могут подключиться с помощью базовой psqlкоманды, так что это подразумевает localhost:5432. Если только кто-то не сообразил env vars / aliases / etc. Мне не нравится мой ответ десять лет спустя, но решение x вместо y совершенно нормально, и в этом случае помогло сотням людей.
Брэд Кох
237
SELECT *
FROM pg_settings
WHERE name = 'port';
a_horse_with_no_name
источник
2
К сожалению, это не сработает, если у вас несколько серверов в одном кластере ...
Витор Баптиста,
3
Это фактически дает вам номер порта, а не хост сервера.
hd1
2
@ hd1: А? Вопрос был (также) как получить номер порта. И это то, что возвращает запрос.
a_horse_with_no_name
да, но если вы не можете подключиться к базе данных, вы не сможете это выполнить: P
jaydel
151

Эта команда даст вам номер порта postgres

 \conninfo

Если postgres работает на сервере Linux, вы также можете использовать следующую команду

sudo netstat -plunt |grep postgres

ИЛИ (если это будет почтмейстер)

sudo netstat -plunt |grep postmaster

и вы увидите что-то похожее на это

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      140/postgres
tcp6       0      0 ::1:5432                :::*                    LISTEN      140/postgres

в этом случае номер порта - 5432, который также является номером порта по умолчанию.

ссылка на кредиты

Хайно
источник
1
он приходит , как почтмейстер для 5432.
codebased
4
это правильный ответ. выбранный ответ верен, но не имеет отношения к вопросу.
Луис Мартинс
46

select inet_server_addr(); дает вам IP-адрес сервера.

Каарел
источник
2
к сожалению, это не дает "живого" имени хоста, если вы подключаетесь через прокси-сервер ssh - я продолжаю получать "127.0.0.1"
Эндрю Вулф
10
Я ничего не понимаю:$postgres=# select inet_server_addr(); inet_server_addr ------------------ (1 row)
Trex
1
Не назвал имя хозяина
Кумар Вайбхав 09
18
select inet_server_addr( ), inet_server_port( );
Джерард
источник
1
Как это не отличается от KAAREL Kitsemets игрового ответа и Andromida в ответе ?
All Workers Are Essential
1
Он отвечает на вопрос, который был задан как единое решение для копирования и вставки.
Gerardw
17

select inet_server_port(); дает вам порт сервера.

Андромида
источник
3
На bluehost этот запрос возвращает пустое поле, хотя на самом деле это порт 5432. Этот запрос не всегда возвращает номер порта.
Эрик Лещински
14

Это не метод sql. Инструкции даются на самом изображении. Выберите сервер, о котором вы хотите найти информацию, и следуйте инструкциям.

введите описание изображения здесь

bonCodigo
источник
10

Порт postgresql определен в вашем postgresql.confфайле.

Для меня в Ubuntu 14.04 это: /etc/postgresql/9.3/main/postgresql.conf

Внутри есть строчка:

port = 5432

Для изменения номера требуется перезапуск postgresql, чтобы оно вступило в силу.

Эрик Лещински
источник
7

Вы можете использовать команду в psql, и \conninfo вы получитеYou are connected to database "your_database" as user "user_name" on host "host_name" at port "port_number".

Intra
источник
5

С терминала вы можете:

\ conninfo

Я бы посоветовал прочитать документацию по их исчерпывающему списку всех команд, используя:

\?

Винаяк Мишра
источник
1
SELECT CURRENT_USER usr, :'HOST' host, inet_server_port() port;

Здесь используется встроенная в psql переменная HOST, описанная здесь.

И системные информационные функции postgres, задокументированные здесь

профессоркольм
источник
Если вы подключаетесь локально, HOSTэто будет каталог, в котором находится ваш доменный сокет UNIX, например /tmp.
епископ
0

зайдите в «Терминал» и просто введите

service postgres status

В результатах вы можете получить порт деталиДетали запуска postgres

В моем случае он работает на порту "5432" (по умолчанию).
Я использую CentOS 7. Надеюсь, это поможет.

Рахал Канишка
источник
0
service postgresql status

возвращает: 10 / main (порт 5432): онлайн

Я использую Ubuntu 18.04

Маркос Галигарсия
источник