다른 DB를 사용할 때는 잘 사용하지 않던 스키마 개념 때문에 굉장히 혼란스러웠지만 이틀 정도 매대기치다보니 정리가 되었다. 휴 @.@


 

# 사용자 권한 설정과 스키마 설정

## postgresql 접속

psql postgres

 

만일 postgreSQL 버전을 여러가지 사용중이라면 포트를 지정해서 접속!

psql -p [포트번호]

* 포트 번호는 postgresql.conf파일에서 확인 가능

 

### postgresql 명령어 참고 블로그

https://browndwarf.tistory.com/51

 

알아두면 유용한 psql 명령어 정리

PSQL 보통 PostgreSQL을 설치할 때 Client Tool인 pgAdmin이 같이 설치되고, 대부분 GUI 환경에서 pgAdmin을 사용하기 때문에 PSQL의 존재조차 모를 때가 있다. (필자는 PostgreSQL 처음 사용했을 때 psql의 존재를 1

browndwarf.tistory.com

 

- PostgreSQL 구조를 생각해두면 이해하는데 좋음

PostgreSQL DBMS > Database > Schema > Table & View & Procedure

 

## 현재 세션 유저 확인

postgres=# SELECT session_user;

 

## 사용자 생성

- 데이터베이스에 접속할 수 있는 사용자 역할을 생성

- testuser 라는 유저명, password 설정하여 유저 생성

postgres=# CREATE ROLE testuser WITH LOGIN PASSWORD '비밀번호설정';

 

## 데이터베이스 생성

- 데이터베이스 자체를 생성하며, 해당 데이터베이스의 소유자를 지정

create database testdb with owner testuser;

 

 - 데이터베이스를 미리 만들어뒀다면 소유주가 postgres(기본사용자)이니 변경이 필요함

ALTER DATABASE policydb OWNER TO testuser;



## 데이터베이스 목록 확인

postgres=# \l+

 

## testuser 계정으로 testdb 접속

postgres=# \c testdb testuser
접속정보: 데이터베이스="testdb", 사용자="testuser".
testdb=>

=> 는 superuser가 아님을 뜻함.

 

## 스키마 생성

PostgreSQL을 제일 먼저 설치하면, 기본적으로 postgres라는 database가 존재하는데 Public이라는 Schema가 생성됨.

그 외 testuser 유저명과 같은 이름의 testuser라는 스키마를 생성 

(사내 규정으로 동일한 이름으로 생성했지만, 필요에 따라 스키마명은 변경하면 된다.)

 

create schema testuser authorization testuser;

 

## 스키마 확인

testdb=> \dn+
                                          스키마 목록
   이름   |      소유주       |              액세스 권한               |          설명
----------+-------------------+----------------------------------------+------------------------
 public   | pg_database_owner | pg_database_owner=UC/pg_database_owner+| standard public schema
          |                   | =U/pg_database_owner                   |
 testuser | testuser          |                                        |

 

## 검색 경로 설정 (필요에 따라 설정하는 듯 싶다. 알아보고 추후에 다시 업데이트 하겠다.)

스키마를 사용자명과 동일하게 설정하지 않았을 때는 검색 경로를 설정해서 해당 DB에서 어떤 스키마가 검색될지 경로를 설정해야 한다.

스키마명을 사용자명과 동일하게 설정했다면 이 단계는 필요치 않다.

testdb=> set search_path to "$user",testdb;
SET
더보기

여기서 사용된 $user는 PostgreSQL에서 제공하는 특별한 변수로, 현재 세션에서 로그인한 사용자의 이름을 나타내게 된다.

이 변수를 사용하면 각 사용자마다 다른 검색 경로를 설정할 수 있다.

 

"$user": 현재 세션의 사용자 이름을 검색 경로의 첫 번째로 지정.

예를 들어, 만약 현재 세션이 testuser로 로그인되어 있다면, 검색 경로의 첫 번째는 testuser이다.

 

testdb: 데이터베이스 testdb를 검색 경로의 두 번째로 지정.

이는 명시적으로 데이터베이스 이름을 사용하여 검색 경로를 설정.

 

이렇게 검색 경로를 설정해두면 현재 사용자의 스키마(사용자의 이름과 일치하는 스키마)를 먼저 검색하고, 그 다음에는 testdb 데이터베이스의 객체들을 검색할 수 있다.

 

검색 경로를 설정함으로써, 객체를 참조할 때 스키마 이름을 명시하지 않고도 직접 참조할 수 있다.

## 사용자 권한 부여

-- testuser 스키마에 대해 testuser 사용자에게 모든 권한 부여
-- USAGE 권한을 부여하여 스키마 내의 객체에 접근할 수 있도록 함
GRANT USAGE ON SCHEMA testuser TO testuser;

-- testuser 사용자에게 testuser 스키마에서 테이블/시퀀스를 생성할 수 있는 권한 부여
GRANT CREATE ON SCHEMA testuser TO testuser;

-- 스키마 내의 모든 테이블에 대해 SELECT, INSERT, UPDATE, DELETE 권한 부여
-- 필요에 따라 권한 조정
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA testuser TO testuser;

-- 스키마 내의 모든 시퀀스에 대해 USAGE 권한을 부여
GRANT USAGE ON ALL SEQUENCES IN SCHEMA testuser TO testuser;

-- 스키마 내의 모든 함수에 대해 EXECUTE 권한 부여
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA testuser TO testuser;

 

 

# DBeaver를 통해 스키마 확인됨

- 디비버를 통해 스키마를 확인하려면 스키마에 할당해논 유저명과 비밀번호를 통해 연결하면 확인 가능.

이 포스팅에서는 사용자 생성에서 만든 testuser 유저로 연결하면 된다.

host는 로컬에서 돌리면 localhost, 가상 머신 위에 해당 DB를 설치했다면 가상 머신의 IPv4 주소를 확인해보길 !

 

 

 

 


참고 : https://velog.io/@easbui/PostgreSQL-%EC%8A%A4%ED%82%A4%EB%A7%88%EC%99%80-%EA%B6%8C%ED%95%9C

 

PostgreSQL 스키마와 권한

공부 기록 남기기지금까지 RDBMS 라고는 MYSQL과 그 사촌 MariaDB만 사용하다가, 이번에 PostgreSQL을 사용해 봐야겠다는 생각이 들어서 무턱 대고 설치해봤다. 일단 데이터베이스 생성과 유저 생성, 권

velog.io

https://kimdubi.github.io/postgresql/pg_schema/

 

PostgreSQL schema 의미 및 권한관리

MySQL이나 ORACLE 을 다루다가 PostgreSQL을 처음 다룰 때 가장 헷갈리는 것 중 하나는 바로 schema의 개념입니다. ORACLE에서는 오브젝트를 가진 USER, MySQL은 논리DB를 schema 라고 하는 반면에 PostgreSQL 에서

kimdubi.github.io

 

'DateBase > PostgreSQL' 카테고리의 다른 글

MacOS | homebrew 이용해서 postgresql 16 설치하기  (0) 2024.06.19

설치 환경 :

Mac M3 PRO / ITerm2 / Homebrew

---------------

Mac에 Homebrew가 설치되어 있다고 가정 후 진행.

설치 되어있지 않다면 아래의 명령어로 설치. 

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

 


# postgresql 16 설치

## 아래의 명령어로 postgresql 16 설치

brew install postgresql@16

 

## 환경 변수 추가

echo 'export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
export LDFLAGS="-L/opt/homebrew/opt/postgresql@16/lib"
export CPPFLAGS="-I/opt/homebrew/opt/postgresql@16/include"

 

## 서비스 시작

brew services start postgresql@16

 

## 서비스 구동 확인

brew services status postgresql@16

 

## 설치된 postgresql 버전 확인

postgres --version

 

 

설치 끝!


 

# postgresql 접속

psql postgres

 

### postgresql 명령어 참고하기 좋은 블로그 소개

https://browndwarf.tistory.com/51

 

 

사용자 권한 설정과 스키마 설정에 대해서는 다음의 포스팅을 확인해주세요.

https://mangocoding-journal.tistory.com/43

 


참고 : https://kholo.dev/post/how-to-install-postgresql-on-mac

 

Mac에서 Homebrew를 이용해 Postgresql 를 설치하기 - 콜로리 블로그

다양한 개발 이야기와 경제 관련 인사이트를 다루는 블로그.

kholo.dev

 

 

데이터베이스설계 수업 과제해야 하는데 과제가 문제가 아니라 올바른 비번을 입력해도 비밀번호가 틀렸다며 로컬로 접속이 안돼서 몇날 몇일을 오류 코드를 들고 인터넷을 뒤져보고 따라하고 프로그램을 지웠다 설치했다를 반복해도 해결되지 않았었다.....눙물......ㅠ

그러던 와중 마감일이 되었고 어려워서가 아니라 접속을  못해서 과제를 못할 상황에 처해있다가 한 블로그를 발견하게 됬다. 출처는 밑에 남긴다.

 

해결방법은 mysql shell 접속을 하고

 \connect root@localhost:3306

이렇게 쳐주면 다음과 같이 새로운 세션이 만들어졌다고 나온다.

Creating a session to 'root@localhost:3306'
Please provide the password for 'root@localhost:3306':

그리고는 비번을 만들어달라고 나온다. 이때 비번을 입력하고 잘 기억하도록 하자!!!!!!

Save password for 'root@localhost:3306'? [Y]es/[N]o/Ne[v]er

비번 입력 후 비밀번호 저장할거냐구 물어본다면 보안을 위해 Y를 입력해준다.


여기까지 해주면 다 된것이다.... 수고했다 망고..

\sql

spl접속을 확인해주고 잘 접속이 된 것을 확인했으면 자 이제 과제를 하러 가자


출처:

https://iamwhat.tistory.com/23

+ Recent posts