반응형
게시판 검색하다가 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라던가 모두 되네요 ^^
반응형