안녕하십니까 관리자님 정말 수고하십니다.
postgresql을 깔아서 사용하고있는데
#createdb netmon
#createuser netmon
위 두가지 명령을 이용해서 데이터베이스와 사용자를 생성하였습니다.
alter user netmon with password 'netmon';
쿼리를 이용해서 패스워드도 입력하였습니다.
그런데 무슨수를 써도 디비에 접속이 안되는 군요
Peer authentication failed for user 'netmon'
이라는 에러메세지와 함께 접속이 안됩니다.
예전에는 디비 사용자와 같은 이름으로 유닉스 계정을 새로 만들어서
즉, netmon이라는 계정을 생성(디비사용자 이름과 시스템사용자 이름을 일치시켜서)
하여 접속에 성공하였었습니다.
하지만 지금은 netmon이라는 계정에서 디비로 접속해야 하는 것이
아니고 다른 계정에서 접속해야 하는 것이 문제입니다.
도데채 무었을 바꿔야지 이것이 해결될수 있을까요..
아참 그리고 만약 유닉스 계정과 디비 사용자의 이름이 같다면
아예 설정해놓은 패스워드 조차 묻지 않고 넘어갑니다.
디비에 연결되어 버립니다.
이렇다염 패스워드를 설정한 의미가 없는 것 아닙니까.
한가지 예로 다음과 같은 프로그램을 컴파일 해서 root에서 실행하면
#include <stdio.h>
#include <postgresql/libpq-fe.h>
void exit_nice(PGconn *conn)
{
PQfinish(conn);
exit(1);
}
int main()
{
char *pg_host,*pg_port,*pg_options,*pg_tty;
char *dbName;
char *pg_user,*pg_password;
int i,j;
PGconn *conn;
PGresult *res;
char *SQL;
pg_host = NULL;
pg_port = NULL;
pg_options = NULL;
pg_tty = NULL;
dbName = "netmon";
pg_user = "netmon";
pg_password = "netmon";
conn = PQsetdbLogin(pg_host,pg_port,pg_options,pg_tty,dbName,pg_user,pg_password);
if (PQstatus(conn) == CONNECTION_BAD )
{
fprintf(stderr,"%s DB에 연결하는 실패했습니다.",dbName);
fprintf(stderr,"%s",PQerrorMessage(conn));
exit_nice(conn);
}
PQfinish(conn);
return 0;
}
%% 위 프로그램은 단순히 디비에 연결했다 끊는 프로그램입니다. %%
#./db
netmon DB에 연결하는 실패했습니다.Peer authentication failed for user 'netmon'
#
이와같은 결과가 나옵니다.
이것을 netmon계정으로 접속해서 실행하면 문제없이 수행이
잘됩니다.
무엇인가 방법이 있을것 같은데, 도통 모르겠습니다. 고수님들의
지도편달 바랍니다. _(__)_
ps. 여러분들 늦었지만 새해복많이 받으십시오.
|