본문 바로가기
Database/PGSQL

유저생성과 DB생성

by 반화넬 2007. 6. 4.
반응형

게시판 검색하다가 user와 db생성을 보고 따라하는데...

 

# 쉘에서 psql 관리자id로 실행
$ psql -U postgres mydb2

-- 데이터베이스 만들고
mydb2=# create database mydb3;
CREATE DATABASE

-- 두명의 사용자를 만들고
mydb2=# create user user1;
CREATE USER
mydb2=# create user user2;
CREATE USER

-- 새로 만들었는 DB에 접속해서
mydb2=# \c mydb3
"mydb3" 데이터베이스로 접속했습니다.

-- 각각의 스키마를 각각의 사용자 권한으로 만들고
mydb3=# create schema user1 authorization user1;
CREATE SCHEMA
mydb3=# create schema user2 authorization user2;
CREATE SCHEMA

-- 첫번째 일반 사용자로 다시 접속해서
mydb3=# \c mydb3 user1
"mydb3" 데이터베이스에 "user1" 사용자로 접속했습니다.
이부분에서 막힙니다.FATAL:IDENT authentication failed for user"user1"
Previous connection kept 이라고 나오네요..
-- 테이블을 하나 만들고
mydb3=> create table t (a text);
CREATE TABLE

-- 두번째 일반 사용자로 접속해서
mydb3=> \c mydb3 user2
"mydb3" 데이터베이스에 "user2" 사용자로 접속했습니다.

-- 똑같이 같은 데이터베이스에 같은 테이블을 만들고
mydb3=> create table t (a text);
CREATE TABLE
mydb3=> insert into t values ('asdf');
INSERT 0 1

-- 이번에는 user1 스키마에 있는 t 테이블을 조회하면, 접근권한 오류발생함
mydb3=> select * from user1.t;
ERROR:  user1 스키마(schema)의 접근권한이 없음

-- 그래서 다시 사용자 바꾸고
mydb3=> \c mydb3 user1
"mydb3" 데이터베이스에 "user1" 사용자로 접속했습니다.

-- 조회를 해보면, user2에서 넣었으니, 여긴 없죠.
mydb3=> select * from t;
 a
---
(0건 있음)
 

또.. 현재 생성되어 있는 db들과 user들을 보려면 어떻게 해야되나요???

 

그리고.. 전에는 잘 되었는데 template1으로 접속한 상태에서 \dt하면 에러(relateion "pg_catalog.pg_user" does not exist)가 나면서 테이블이 보이지 않습니다.
)

 

아무것도 모르는 상태에서 시작하려니 많이 헤메네요^^;; 선배님들의 답변 기다리겠습니다!!


이 글에 대한 댓글이 총 2건 있습니다.마지막, pg_catalog.pg_user 없다는 이야기는 psql 프로그램의 버전과, db 서버 버전이 맞지 않아서 발생하는 것 같고요, 서버 버전 확인해서 같은 버전의 psql 프로그램을 쓰면 해결날 듯싶고요,

 

user1 로그인 실패는 psql 프로그램 시작 자체를

psql -U user1 mydb3

해서도 안된다면,

두가지인듯한데요,

 

하나는 pg_hba.conf 설정에서 막아두었는 경우이고,

다른 하나는 autocommit이 off 되어있어, commit 없이 사용자를 바꾸려고 했으니, 실제로 사용자가 없는 경우이고...

 

데이터베이스를 보는 명령어는 \l 이고, 사용자 보는 명령은 select * from pg_user 입니다.

 

김상기(ioseph)님이 2005-08-04 11:22:18에 작성한 댓글입니다.자문자답;;

처음 DB초기화시 SELINUX땜에 information schema 도중 실패난것땜에 그런가보네요...

 

죽이고 다시 초기화 하고 다시 살리고 나니 \dt 라던가 pg_user라던가 모두 되네요 ^^
반응형