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 5906 게시물 읽기
No. 5906
유저가 모든 데이터 베이스에 접근 가능한데요?
작성자
초심으로
작성일
2005-02-18 15:21
조회수
2,467

이건 postgresql 에 특성인가요?

 

데이터베이스를 지정해줬는데 다른 데이터베이스에 떡하니 테이블을 생성해버리네요.

 

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

디폴트 권한이 모든 사용자가 사용 가능하도록 되어있습니다.

 

mysql 개념의 database.tablename 같은 것을 바란다면, 여기서는 schema 라는 것으로 풀어갑니다.

 

즉, PostgreSQL의 database는 MySQL database 보다 한단계윗 개념입니다. 이게 전통적인 database 개념이구요.

 

일단 하나의 데이터베이스는 모든 사용자가 접근이 가능하고, 그 데이터베이스 소유주는 이 데이터베이스를 사용할 각 사용자들의 각각의 스키마를 만들어줍니다. 이때, 스키마의 소유주를 각각의 사용자로 할당을 하지요. 일반적으로 이 스키마 이름은 사용자 이름과 같은 것을 사용합니다.

 

오라클의 경우는 사용자를 하나 만들면, 자동으로 그 사용자의 이름과 같은 스키마가 묵시적으로 만들어지지요.

 

그래서, select * from a.table1, b.table2 where a.table1.id = b.table2.id

이런식으로 사용하지요.

 

아무튼, 스키마가 만들어지면, 그때부터는 완벽하게 배타적입니다.

 

대략적인 이야기를 예문으로 표시하면,

 

 

# 쉘에서 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" 사용자로 접속했습니다.

-- 테이블을 하나 만들고
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건 있음)
김상기(ioseph)님이 2005-02-18 15:55에 작성한 댓글입니다.
이 댓글은 2005-02-18 15:56에 마지막으로 수정되었습니다.

8.0에 db 접근 권한 주는 부분이 생겼나 보네요. 해결되었습니다.

초심으로님이 2005-02-18 16:55에 작성한 댓글입니다. Edit

아.. 답변 감사합니다. 

헐랭이님이 2005-02-18 16:56에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5911PostgreSQL 8.0.1 과 odbc (psqlodbc-07_03_0200.zip) [2]
김이수
2005-02-20
3145
5910win2k postgresql8.0(space tag)설치후..? [4]
lib
2005-02-19
3626
5908[질문]7.3.X 버전대에서 namespace(schema) 별 백업방법?? [1]
가우나라
2005-02-18
2278
5906유저가 모든 데이터 베이스에 접근 가능한데요? [3]
초심으로
2005-02-18
2467
5905데이터 베이스 유저 변경은? [1]
초심으로
2005-02-18
2676
5904데이터베이스 복원 에러가나는데요.. [2]
초짜
2005-02-18
6155
5903[질문]소스 공개안하나요? [2]
오윤석
2005-02-18
2196
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다