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 4976 게시물 읽기
No. 4976
패스워드 관련 질문
작성자
왕초보
작성일
2003-09-29 14:22
조회수
1,947

포스트그레스에서

 

유저별로 암호를 부여하면,

모든 디비에 대하여 특정 유저에 접근권한이 있으면,

지정된 패스워드로 모두 접근이 가능한데..

이런 방식이 아닌

디비마다 다른 암호를 지정하여

해당 디비에 접근시 지정한 암호를 인증하는 방식을 알고 싶습니다.

즉, 같은 유저라 할지라도 디비에 따라 접근시 다른 암호를 사용하는 것을 말합니다.

 

예전에 pg_hba.conf 에서

host  dbname  ip netmask password passwordfile

이런 비슷한 형태를 취하여 인증하게 하였으나,

언제부터인가 pg_passwd 가 사라지고 이 방법 또한 사용되지 않는다는 것을 본 기억이 납니다.(잘못 알고 있는지도..)

근데 pg_hba.conf 에는 password 부분에 대한 설명이 분명 존재하긴 한데요..

그게 현재의 최신버젼에도 적용되는것인가요?

pg_passwd 가 없어서 암호생성도 할수가 없는데.. 어떻게 만들어야 하나요..

만일 이 부분은 더이상 지원하지 않는다면

어떤 방법으로 이와 같은 인증방식을 사용할수 있을런지요

아니면 사용자의 패스워드처럼 sql 문(?)으로 디비별로 지정하는 방법이 있다면

어떤식으로 지정하는지요..

 

또한 clusterdb 라는 명령어가 있는데..

cluster 라는게 뭔지 잘 몰라서 그러는데요

이 명령어는 어디에 사용되는건지요..

 

마지막 질문인데요

검색문에서 결과를 찾기 위하여 index 를 타는지 안 타는지는 어떻게 알수 있는지요?

 

미리 감사드리며, 행복하세요

 

 

 

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

clusterdb 명령의 man page 마음대로 의역한 번역입니다.  뭔가 찝찝하시면 원문을 보시길.

 

clusterdb 프로그램은 PosterSQL에서 사용하는 하나의 데이터베이스 안에 있는 테이블들을 recluster 하는 유틸리티이다. 이 프로그램이 실행 되면 먼저 전에 cluster된 적이 있는 테이블들을 찾고, 마지막으로 사용된 같은 인덱스를 기준으로 다시 cluster 작업을 한다. 이 프로그램은 cluster된 적이 없는 테이블에 대해서는 어떠한 작업도 하지 않는다.

 

clusterdb 프로그램은 PostgreSQL 대화형 프로그램인 psql 프로그램을 이용해서, CLUSTER 명령을 실행하는 쉘 스크립트이다. 즉, 이 프로그램을 이용하지 않고 사용자가 직업 적당한 방법으로 CLUSTER 명령을 실행해도 똑같은 결과를 만들 수 있다. 이 프로그램은 내부적으로 psql 프로그램을 이용하기 때문에, 작업할 데이터베이스 접근에 관계된 모든 정보는 psql 프로그램의 그것을 따른다.

 

또한 데이터베이스를 접근할 때 비밀번호를 입력해야하는 상황이라면 필요에 따라 이 비밀번호를 여러번 물어볼 수도 있다. 이런 경우에는  $HOME/.pgpass 파일에 그 비밀번호를 입력해두면 그 파일을 읽어서 비밀번호를 대신한다.

 

cluster 명령에 대한 한글 맨페이지

(좀 오래된 것인지라, 현재 버전과 다를 수 있습니다. 알아서 읽으시길)

김상기(ioseph)님이 2003-09-30 10:19에 작성한 댓글입니다.
이 댓글은 2003-09-30 10:27에 마지막으로 수정되었습니다.

검색 쿼리가 인덱스를 사용하는지를 살펴보는 명령은 explain 입니다.

 

explain 명령의 한글 맨페이지

(좀 오래된 것인지라, 현재 버전과 다를 수 있습니다. 알아서 읽으시길)

김상기(ioseph)님이 2003-09-30 10:19에 작성한 댓글입니다.
이 댓글은 2003-09-30 10:31에 마지막으로 수정되었습니다.

답변 감사드립니다.

 

패스워드 부분에 대해서는 특별한 해결책이 없는지요?

관련 문서를 찾아보고, 옛날 방식으로 pg_hba.conf 를 만들어봐도

여전히 제가 원하는 인증방식이 되질 않더군요..

 

제가 원하는것은 user 별 암호를 틀리게 해서 접속하는것이 아니라

db 별로 암호를 틀리게 해서 접근하는 방식을 알고 싶었는데..

예를 들면

웹서비스를 할 경우

db 들이 여러개 존재하게 되는데

nobody 의 권한으로 접속한다고 가정한다면

nobody 를 가지고 패스워드 하나로

자신의 것만이 아닌 웹서비스를 하는 타 디비에도

얼마던지 접근이 가능하다는 말인데..

 

그렇다고 디비별로 유저를 추가할 수도 없는 일이고..

 

mysql 의 경우

각 디비별로 해당유저로부터의 암호를 다르게 하여 접근하는 방식을 채택하고 있는데..

예전의 6.x 대의 postgresql 에선 pg_passwd 가 지원되어서 가능했었는데.. 없어졌는지.. 먹지를 않군요..

7.3.x 대에서는 암호부분은 pg_shadow 테이블에서 전적으로 관리하나 보군요..

 

유저별 인증이 아닌 디비별 인증.. 좋은 방법이 없을까요?

 

host DB1 USER  ip  ip_netmask password

host DB2 USER  ip  ip_netmask password

USER 는 똑같은 비번을 가지고 DB1, DB2 를 동시에 들어갈수 있는데..

USER 라는 user 가 DB1 과 DB2 에 접근할떄

서로다른 비번으로 접근하기를 원합니다.

 

 

왕초보님이 2003-09-30 21:25에 작성한 댓글입니다. Edit

데이터베이스 사용자라는 것에 대한 뭔가의 오해가 있는 듯 싶습니다. PostgreSQL에서 사용자 관련 정보(pg_shadow)는 cluster(여기서 크러스트 윗 인덱싱 관련 크러스트를 말하는 것이 아니라, 하나의 Postmaster 프로세스에 의해서 관리되는 일군의 데이터베이스들을 묶어서 크러스트라고 하더군요) 단위로 관리됩니다.   

 

하나의 데이터베이스 사용자는 하나 이상의 비밀번호를 가져야할 이유가 없지요. - 비밀번호는 단지 인증을 위한 값일 뿐이지 그것이 사용할  데이터베이스를 찾아내는 key가 될 수 없습니다. 만일 된다면, 아주 잘못된 설계라고 생각합니다. - 이런 방식을 생각하셨다면, 그 생각을 바꾸셔야할 듯.

 

a 사용자가 A, B 데이터베이스를 각기 다른 비밀번호로 접근하는 것이 아니라,

 

A 데이터베이스는 a 사용자가,

B 데이터베이스는 b 사용자가 접근할 수 있도록 만들면 되겠지요. 위에서 말하는  nobody 는 아마 시스템 사용자인듯한데, PostgreSQL의 사용자는 시스템 사용자와는 완벽히 별개입니다.

필요할 때 마다 사용자를 추가해서 사용하시면됩니다.

이때, c 사용자는 A, B  데이터베이스 모두 접근이 가능해야한다면, A, B 데이터베이스에서 grant 명령으로 c 사용자의 접근을 허용하면 됩니다.

 

김상기(ioseph)님이 2003-09-30 23:35에 작성한 댓글입니다.

네 감사합니다.

 

그러면 한가지만 더 물어보겠습니다.

 

SQL 유저를 추가할 경우, qmail 처럼 가상의 유저를 추가할수 있는지요 아니면 adduser 로 만들어진 실계정만 가능한지요?

만일 가상의 유저(실제 *nix 상에서는 존재하지 않는 계정)를 추가하는 방법을 알고 싶습니다.

 

왕초보님이 2003-10-01 08:08에 작성한 댓글입니다. Edit

createuser 를 이용하여 추가한 유저는 디비에만 추가되고 디비만을 사용가능한 유저입니다.  위에서 말씀하신것과 같이 시스템과는 상관없습니다. 

 

혹 시스템에 aaa 라는 유저가 있고 디비에 aaa 라는 유저를 추가했을경우 디비에 붙을 때 유저이름을 지정하지 않아도 접근이 가능한데 이것은 디비 접근 유저를 지정하지 않을경우 이것의 기본값이 시스템 계정의 이름을 사용하기 때문에 가능한 것입니다.  그러니 시스템 계정과 디비 계정을 별도로 생각하세요...

 

한 시스템 계정 사용자에게 여러개의 디비 계정을 주어도 상관없습니다. 

 

qmail 이나 기타 가상유저를 사용하는 프로그램들도 모두 한 디비 계정하에 디비, 테이블이 만들어지고 이 가상 유저들을 관리하는 것이지요.  그러니 디비 계정을 qmail 등과 같은 가상 유저와 동일시 한다는 것은 좀 문제가 있는것 같습니다.

이봉우님이 2003-10-01 11:55에 작성한 댓글입니다. Edit

아 그렇군요..

테스트를 미리 해보지 않고 질문부터 드려서 죄송했습니다.

 

예전에는 createuser 로 db 계정을 만들때

시스템 계정이 존재하지 않을 경우  만들어지지 않았던 기억이 나서

물어봤던 겁니다.

답을 보고 직접해보니 이상없네요..

 

답변 감사드립니다.

 

왕초보님이 2003-10-01 20:38에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
49817.3.4 설치후 버전 문제.. [1]
이종래
2003-10-02
1077
4980백업과 복구에 관한 질문 [2]
정보통
2003-09-30
1540
4978PostgreSQL 데이타베스에서 BOM은 안되나요 [5]
강구만
2003-09-30
1413
4976패스워드 관련 질문 [7]
왕초보
2003-09-29
1947
4974[에러]포스트 그레스 작동 (김상기님의 답변에)문의 [1]
김남헌
2003-09-26
1456
4973관리자 임의의 파일로 데이터를 저장할 수 있는지요? [3]
김명호
2003-09-25
1247
4972설치 에러 도와주세요! [3]
김남헌
2003-09-25
1177
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다