it-source

PSQL 명령을 사용하여 호스트 이름 및 포트 찾기

criticalcode 2023. 6. 5. 23:59
반응형

PSQL 명령을 사용하여 호스트 이름 및 포트 찾기

PSQL을 실행 중이며 펄 애플리케이션을 데이터베이스에 연결하려고 합니다.데이터베이스가 실행 중인 현재 포트 및 호스트를 찾는 명령이 있습니까?

SELECT *
FROM pg_settings
WHERE name = 'port';

이 명령은 사후 포트 번호를 제공합니다.

 \conninfo

Postgres가 리눅스 서버에서 실행 중인 경우 다음 명령도 사용할 수 있습니다.

sudo netstat -plunt |grep postgres

OR (우체국장으로 오는 경우)

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이며 기본 포트 번호이기도 합니다.

크레딧: 링크

기본 PostgreSQL 포트는5432데이터베이스가 작동 중인 호스트는 호스팅 공급자가 제공한 것이어야 합니다. 웹 서버를 지정하지 않았다면 동일한 호스트일 것입니다.일반적으로 웹 서버와 데이터베이스 서버가 동일한 호스트에 있다고 가정하면 이는 localhost로 구성됩니다.

select inet_server_addr();서버의 IP 주소를 제공합니다.

이것은 non-sql 메서드입니다.이미지 자체에 대한 지침이 제공됩니다.정보를 찾을 서버를 선택한 후 단계를 수행합니다.

여기에 이미지 설명 입력

select inet_server_addr( ), inet_server_port( );

select inet_server_port();서버의 포트를 제공합니다.

터미널에서 "postgres list cluster"를 간단히 수행할 수 있습니다.

pg_lsclusters

Postgres 버전 번호, 클러스터 이름, 포트, 상태, 소유자, 데이터 디렉토리 및 로그 파일의 위치를 반환합니다.

postgresql 포트는 다음에 정의되어 있습니다.postgresql.conf파일.

Ubuntu 14.04의 경우 다음과 같습니다./etc/postgresql/9.3/main/postgresql.conf

안에는 다음과 같은 선이 있습니다.

port = 5432

이 번호를 변경하려면 postgresql을 다시 시작해야 합니다.

터미널에서 다음 작업을 수행할 수 있습니다.

\sysloginfo

다음을 사용하여 모든 명령의 전체 목록에 있는 설명서를 읽는 것이 좋습니다.

\?

psql에서 명령을 사용할 수 있습니다.\conninfo얻게 될 것입니다You are connected to database "your_database" as user "user_name" on host "host_name" at port "port_number".

포트 번호를 찾으려면 이 명령을 실행합니다(로컬 호스트에 있다고 가정).

select setting from pg_settings where name='port';
SELECT CURRENT_USER usr, :'HOST' host, inet_server_port() port;

여기에 설명된 psql의 내장 HOST 변수를 사용합니다.

여기에 문서화된 포스트그레스 시스템 정보 기능

service postgresql status

반품: 10/메인(포트 5432): 온라인

Ubuntu 18.04를 실행하고 있습니다.

터미널로 이동하여 입력합니다.

service postgres status

결과에서 포트postgres 세부 정보 실행 중 세부 정보를 얻을 수 있습니다.

이 경우 포트 "5432"(기본값)에서 실행됩니다.
CentOS 7을 사용하고 있습니다.이게 도움이 되길 바랍니다.

postgresql을 실행 중이라고 하셨기 때문에 다음과 같이 가정하겠습니다.

  • 당신은 리눅스를 사용하고 있습니다.
  • 슈퍼 사용자 권한을 가진 계정이 하나 이상 있거나 postgres 역할에 액세스할 수 있습니다.
  • (재미로) 데이터베이스 자체에서 단일 트랜잭션 내에서 두 값에 모두 액세스해야 합니다.

SQL 코드 */

CREATE TEMP TABLE tmp ( hostname text, port bigint ) ON COMMIT DROP;

COPY tmp FROM PROGRAM $pgm$ printf "$HOSTNAME\t$(i=1 && until [[ "$(psql -U postgres -p $i -qt -c "SELECT 'true'" 2>/dev/null | sed -e '$d' | xargs | tr -d "\n")" == "true" ]]; do i=$(($i+1)) && if [ $i == "65535" ]; then break ; fi ; done && echo $i)"$pgm$ ( format 'text', delimiter '\t' );

SELECT host, port FROM tmp;

$pgm$로 구분된 코드를 셸 스크립트로 실행하고 값을 서버 측 COPY API의 stdin으로 반환하는 두 가지를 모두 제공합니다.서버측 셸을 호출하려면 이 메서드에 테이블 대상이 필요합니다.

만약 당신이 temp 테이블 없이 호출할 수 있어야 한다면, 즉 함수 호출로서 위의 셸을 plsh 언어로 구현해 보세요.

내 생각엔 포스트그레SQL은 서버의 호스트 이름을 가져오기 위한 내장 함수를 제공하지 않았기 때문에 서버에서 정보를 가져오기 위해 확장자를 작성해야 할 수 있습니다.

저는 포스트그레가 있다는 것을 발견했습니다.서버에서 호스트 이름을 가져올 수 있는 SQL 확장 pg-hostname.

하고 확을설해확활장성다고하통음화을정있다수쿼습니리할보해로 할 수 .inet_server_port&hostname기능.

CREATE EXTENSION hostname;

SELECT hostname(),inet_server_port();

@a_horse_with_no_name 답변에 추가됩니다.호스트 이름 가져오기

SELECT boot_val,reset_val FROM pg_settings WHERE name='listen_addresses';;

저는 그런 해결책을 사용합니다.플러그인이 필요하지 않습니다.임시 테이블은 필요하지 않습니다.unix에만 해당됩니다.

select pg_read_file('/etc/hostname') as hostname, setting as port from pg_settings where name='port';

SQL 서버를 마우스 오른쪽 버튼으로 클릭합니다.내 것은 포스그레스SQL 13을 선택하고 속성 -> 연결을 선택합니다.이 기능은 다음과 같습니다.

  • 호스트 이름
  • 포트 ID
  • 사용자 이름.

언급URL : https://stackoverflow.com/questions/5598517/find-the-host-name-and-port-using-psql-commands

반응형