database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10199 게시물 읽기
No. 10199
OS상에서 dba계정을 알 수있는 방법이 있나요?
작성자
이성문(꿈틀이)
작성일
2020-10-22 18:15
조회수
143

제목 그대로 입니다.

최초 initdb 수행시 -U 옵션으로 넣었던 유저명을 알 수 없고, db에 접속할 다른 유저정보도 없는 상태에서 해당 dba계정이름을 알 수 있는 방법이 있을까요?

 

이 글에 대한 댓글이 총 1건 있습니다.

어떤 정보도 알 수 없는 상황이라면,

실행 중인 데이터베이스 프로세스 소유주의 OS 계정으로 일단 OS 접속 한 뒤,

데이터베이스 자료 파일이 있는 디렉터리를 일단 찾아야합니다.

lsof 명령이나, 프로세스 이름 뒤에 혹 그 경로가 보이기도 합니다.

아니면, 해당 프로세스의 실행환경 /prot/[pid]/environ 파일을 살펴봐서 PGDATA 환경 설정값으로 간주할 수도 있고,

어떻게든 일단 데이터베이스 자료 파일이 있는 디렉터리로 가면, 그 안에 global 이라는 디렉터리가 있고 그 안에 이진파일 형태로 데이터베이스 사용자 정보가 있는 파일이 있습니다.  파일 이름이 숫자로 되어 있어 일단 모두 뒤져봐야겠지요. 통상 strings 같은 OS 명령어로 살펴봅니다. 그 결과 가운데, 일단 사용자 이름 같아 보이는 이름들을 메모해 두고, (통상 비밀번호를 지정하기 때문에 비밀번호(md5문자열)와 함께 보이는 단어들이 사용자 이름입니다.

다음 pg_hba.conf 를 수정해서 local 접속을 모든 사용자의 모든 데이터베이스로 비밀번호 없이 접속할 수 있도록 한 뒤,

찍은 사용자 이름으로 접속을 시도해 봅니다. 데이터베이스는 template1

잘 접속 되면, 이 때부터는 pg_roles 뷰를 통해서 슈퍼유저를 찾으면 됩니다.

접속이 거부되면 잘 접속 되는 이름을 찾을 때까지.  :(

(그 찾은 이름이 그룹 이름일 수도 있고, 테이블 스페이스 이름일 수도 있고, 데이터베이스 이름일 수도 있거든요.. 아무튼 잘 찍어야 합니다.)

global 디렉터리네 몇번 파일이다고 알려드리지 못하는게, 데이터베이스 버전마다 다르거든요.

 

통상 이 방법은 정말 저수준 방법입니다.

일반적으로 하나의 데이터베이스는 반드시 그 데이터베이스를 사용하는 응용프로그램이 있기 때문에, 프로세스를 보면 그 응용 프로그램이 사용하는 계정 이름이 보입니다. 그 이름으로 pg_hba.conf 를 위에서 설명한 대로 임시로 바꿔서 비밀번호 없이 접속하면, pg_roles 뷰를 접근할 수 있게 됩니다.

 

 

 

김상기(ioseph)님이 2020-10-22 19:50에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10202pgadmin3 에서 에러 메시지 [3]
전상도
2020-10-28
107
10201AQueryTool에서 PostgreSQL을 지원하는 기능을 추가하였습니다.
조동건
2020-10-27
106
10200PostgreSQL Replication 방식에 대한 문의 [2]
반지현
2020-10-27
121
10199OS상에서 dba계정을 알 수있는 방법이 있나요? [1]
이성문
2020-10-22
143
10196WAL streaming replication 시 오류 발생 [2]
초보
2020-10-20
149
10195Win10에서 설치 에러 [2]
전상도
2020-10-19
146
10188Function 내의 검색 값 적용 시키기. [1]
레인버그
2020-10-09
186
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2020 DSN, All rights reserved.
작업시간: 0.010초, 이곳 서비스는
	PostgreSQL v13.0으로 자료를 관리합니다