์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[Postgresql] MacOS PostgreSQL ์„ค์น˜ ํ•˜๊ณ  ํ…Œ์ด๋ธ” ์ƒ์„ฑ, ์กฐํšŒํ•˜๊ธฐ & ์ฟผ๋ฆฌ

MK_____ 2022. 1. 24. 23:48

PostgreSQL

PostgreSQL์€ ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ ๋ฐ ํ‘œ์ค€ ์ค€์ˆ˜๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ๊ฐ์ฒด-๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค RDBMS๋กœ์„œ ์‚ฌ์šฉ์œจ์€ Oracle, MySQL, Microsoft SQL์— ์ด์–ด 4์œ„๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํŠนํžˆ MacOS ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ์—๋Š” PostgreSQL์ด ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž…๋‹ˆ๋‹ค.

โ€‹

brew install postgresql 

=> ๋‚˜๋Š” 14.1 ๊น”์•„์ง

 

โ€‹

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. To start postgresql : ์ด๋ผ๋ฉฐ ์นœ์ ˆํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋„ค์š”, ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

โ€‹

brew services start postgresql

โ€‹

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์œผ๋‹ˆ, ๋ฒ„์ „์„ ํ™•์ธ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

postgres -V

์ด์ œ DB์— ์ ‘์† ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

โ€‹

https://www.postgresql.org/docs/current/postgres-user.html

Default ์ ‘์† ๊ณ„์ •์„ ํ™•์ธํ•˜๋ ค๊ณ  PostgreSQL ์˜ Document๋ฅผ ํ™•์ธํ•˜๋Š”๋ฐ, PostgreSQL์ด ์„ค์น˜์‹œ ์ž๋™์œผ๋กœ ๊ณ„์ •์„ ์ƒ์„ฑํ•ด์ค€๋‹ค๊ณ  ์จ์žˆ์Šต๋‹ˆ๋‹ค.

โ€‹

์ •๋ง์ธ์ง€ ์ ‘์† ํ•ด์„œ ํ™•์ธ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

psql postgres

์•„๋ž˜ ๋ช…๋ น์–ด๋กœ role ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

\du

์ •๋ง๋กœ shane ์ด๋ผ๋Š” Superuser๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Q ๋ฅผ ์ž…๋ ฅํ•ด ๋น ์ ธ๋‚˜์˜ต๋‹ˆ๋‹ค.

โ€‹

์ด์ œ Client๋กœ ์ ‘์† ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

PostgreSQL Client Tool๋กœ๋Š” TablePlus, Psequel(MYSQL์˜ Sequel Pro ์ž…๋‹ˆ๋‹ค), SQLPro, Postico ๋“ฑ์ด ์žˆ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ์š”. ์ €๋Š” DBeaver๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด ์žˆ๋˜ ๊ฑธ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ ์„ ํƒ ํ•˜๊ณ 

โ€‹

ํ•„์š”ํ•œ Driver๋ฅผ ๋‹ค์šด ๋ฐ›์Šต๋‹ˆ๋‹ค.

PostgreSQL ์—์„œ ์œ„์—์„œ ํ™•์ธํ•œ shane์„ ์ž…๋ ฅํ•ด Test Connection ์„ ์ˆ˜๋ฆฝํ•ด๋ณด๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ์—ฐ๊ฒฐ์ด ๋ฉ๋‹ˆ๋‹ค.

โ€‹

study๋ผ๋Š” ์ด๋ฆ„์˜ database๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

create database study;

โ€‹

testuser๋ผ๋Š” ์ด๋ฆ„์˜ user๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

create user testuser with encrypted password 'testpass';

โ€‹

testuser์—๊ฒŒ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ƒ์„ฑ ๊ถŒํ•œ๋„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

alter user testuser createdb

\du ๋กœ ํ™•์ธํ•ด๋ณด๋‹ˆ ๊ถŒํ•œ์ด ์ž˜ ์„ค์ • ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โ€‹

์ƒ์„ฑํ•œ ์œ ์ €์—๊ฒŒ ์•„๊นŒ๋งŒ๋“  study ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ถŒํ•œ์„ ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

grant all privileges on database study to testuser;

โ€‹ 

์—ฐ์Šต์šฉ Database๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€๋งŒ ๊ถŒํ•œ ์„ค์ •์„ ์ž์„ธํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”

https://www.postgresql.org/docs/13/sql-grant.html ์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๋ฆฌ์ŠคํŠธ ๋ณด๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

\list

์•„๋ž˜ ๋ช…๋ น์œผ๋กœ ํ…Œ์ด๋ธ” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

\dt

์•„์ง ์•„๋ฌด ํ…Œ์ด๋ธ”๋„ ์กด์žฌํ•˜์ง€ ์•Š์•„์„œ ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ Did not find any relations. ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

\connect ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

\connect study

โ€‹

์ถ”๊ฐ€ํ•œ ์‚ฌ์šฉ์ž๋กœ ์ ‘์†ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. -U ๋ช…๋ น์–ด์™€ username ์„ ์ž…๋ ฅ ํ•ฉ๋‹ˆ๋‹ค.

psql postgres -U testuser

postgres-# ์—์„œ postgres=> ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. #์€ super user๋ฅผ ๋œป ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์ƒ์„ฑํ•œ study Database์— ์ƒˆ๋กœ ์ƒ์„ฑํ•œ testuser๋กœ DBeaver ์—์„œ ์ ‘์† ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 
 
 
 

Query ์ฟผ๋ฆฌ

CREATE TABLE list (
    id serial PRIMARY KEY,
    name VARCHAR(50),
    time VARCHAR(100)
);

INSERT INTO list(id, name, time) VALUES(DEFAULT,'๊ฐ•๋™์›','2022-01-24');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'๊ถŒ์œจ','2022-01-23');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'์ด๋ฏผ์ •','2022-01-23');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'๊น€ํƒœ๋ฆฌ','2022-01-21');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'์ด๋ฏผํ˜ธ','2022-01-20');
INSERT INTO list(id, name, time) VALUES(DEFAULT,'์—ฌ์ง„๊ตฌ','2022-01-19');

SELECT * FROM list;

SELECT * FROM list WHERE time BETWEEN '2022-01-19' AND '2022-01-23';
 
 
 => String time WHERE BETWEEN AND ์ž˜ ๋‚˜์˜ด