1. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์
: MYSQL ํด๋ผ์ด์ธํธ๋ก ์ ์ํ๊ธฐ ์ํด์ ํฐ๋ฏธ๋์ ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ
$ mysql -u ์ฌ์ฉ์์ด๋ฆ -p
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ
: MYSQL ์๋ฒ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ
mysql> SHOW DATABASES;
3. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ
: MYSQL ์๋ฒ์ ์ ์ ํ, ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ
mysql> USE ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ;
4. ํ ์ด๋ธ ์กฐํ
: ์ ํํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ํ ์ด๋ธ์ ์กฐํ
mysql> SHOW TABLES;
5. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง๋๋ ๋ช ๋ น์ด
mysql> CREATE DATABASE ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ;
6. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์ ํ๋ ๋ช ๋ น์ด
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด(์คํค๋ง)๋ฅผ ์ญ์ ํ๋ ๋ช ๋ น์ด
ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ถ์ ๋ชจ๋ ๊ฐ์ฒด(ํ ์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค ๋ฑ)๊ฐ ์์ ํ ์ญ์ ๋๋ค.
(๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋ชป ๋ง๋ค์๊ฑฐ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๊ณ ์ถ์ ๋, ์ง์๋ ์๊ด์์ ๋ ์ฌ์ฉํ๋ค.)
mysql> DROP DATABASE ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ;
7. ์ ์ ๋ง๋๋ ๋ช ๋ น์ด
- ์ฌ์ฉ์์ด๋ฆ: ์๋ก์ด ์ ์ ์ ์ด๋ฆ์ ๋ํ๋ธ๋ค. ์ ์ ์ด๋ฆ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ , ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ์๋ฌธ์๋ก ์์ฑํ๋ ๊ฒ์ด ๊ด๋ก์ด๋ค.
- ํธ์คํธ: ์ ์ ์ ์ ์์ ํ์ฉํ ํธ์คํธ๋ฅผ ์ง์ ํ๋ค. ๋ณดํต localhost๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ํธ์คํธ์์๋ง ์ ์์ ํ์ฉํ๋๋ก ๋ง๋ ๋ค. % ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ค ํธ์คํธ์์๋ ์ ์์ ํ์ฉํ ์ ์๋ค. (BUT ํน์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ํน์ ํธ์คํธ๋ง ํ์ฉํ๋๋ก ์์ฑํด์ ์์ ํ๊ฒ DB๋ฅผ ๊ด๋ฆฌํ๋๋ก ํ์!)
- ๋น๋ฐ๋ฒํธ: ์ ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๋ค.
mysql> CREATE USER '์ฌ์ฉ์์ด๋ฆ'@'ํธ์คํธ' IDENTIFIED BY '๋น๋ฐ๋ฒํธ';
[์ฐธ๊ณ ]
๋ชจ๋ ํธ์คํธ์์ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ ์ ๋ฅผ ๋ง๋๋ ๋ช ๋ น์ด
mysql> CREATE USER '์ฌ์ฉ์์ด๋ฆ'@'%' IDENTIFIED BY '๋น๋ฐ๋ฒํธ';
์์ ๊ฐ์ด ํ ๋ ์ฅ๋จ์ ์ด ์๋ค.
- ์ฅ์
1. ํด๋ผ์ฐ๋ ๋ฐ ๋ถ์ฐ ํ๊ฒฝ or ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ๋ฌ ํธ์คํธ๊ฐ ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ โก๏ธ ์ถ๊ฐ์ ๊ถํ ์ค์ ์์ ์ด ์์ด์ง
: ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด๋ ๋ถ์ฐ ์์คํ ์์๋ ํธ์คํธ IP๊ฐ ๋์ ์ผ๋ก ํ ๋น๋ ์ ์๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ํธ์คํธ์์ ์ ๊ทผ ๊ฐ๋ฅํ ์ฌ์ฉ์๋ฅผ ์์ฑํด์ IP ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ์ถ๊ฐ์ ์ธ ๊ถํ ์ค์ ์์ ์ ์์จ ์ ์๋ค.
- ๋จ์
1. ๋ณด์ ์ทจ์ฝ
: ๋ชจ๋ ํธ์คํธ์์ ์ ๊ทผ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, DB๊ฐ ์ธ๋ถ ๊ณต๊ฒฉ์ ์ทจ์ฝํด์ง ์ ์๋ค.
2. ํ์ํ์ง ์์ ํธ์คํธ์์์ ์์ธ์ค๊ฐ ํ์ฉ๋ ์ ์์
: ๋ฐ์ดํฐ ์ ์ถ ๋ฐ DB์ ๊ฒฐํจ์ ์ ํ ์ํจ๋ค.
3. ๋ก๊ทธ ๋ฐ ๋ชจ๋ํฐ๋ง ์์ ์ด ๋ณต์กํด์ง ์ ์์
: ๋ชจ๋ ํธ์คํธ์์์ ์ ๊ทผ์ผ๋ก ์ธํด, ์์ธ์ค ๋ก๊ทธ๋ฅผ ๋ถ์ํ๊ณ ์ด์ ์งํ๋ฅผ ๊ฐ์งํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค.
8. ์ ์ ์กฐํ ๋ฐฉ๋ฒ
mysql> SELECT user, host FROM mysql.user;
๐ ์ฌ๊ธฐ์ ์ ๊น!! (๊ถํ๋ฌธ์ )
์ผ๋ฐ ์ ์ ๋ก mysql server์ ์ ์ํด์ ๋ค๋ฅธ ์ ์ ๋ฅผ ์กฐํํ๊ธฐ ์ํด user table์ ์กฐํํ๋ฉด ์๋์ ๊ฐ์ด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
mysql> SELECT user, host FROM mysql.user;
ERROR 1142 (42000): SELECT command denied to user 'wanted'@'localhost' for table 'user'
์ด๋ ์ผ๋ฐ ์ ์ (์ฌ๊ธฐ์๋ wanted)๊ฐ 'user'ํ ์ด๋ธ์ ๋ํ SELECT๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ค.
์ด ๊ฒฝ์ฐ, root ๊ถํ์ผ๋ก mysql server์ ์ฌ์ ์ ํ GRANT ๋ช ๋ น์ด๋ก ์ผ๋ฐ ์ ์ (์ฌ๊ธฐ์๋ wanted)์ ๊ถํ์ ๋ถ์ฌํด์ฃผ๋ฉด ๋๋ค.
(๋ ๋ค๋ฅธ ๊ฒฝ์ฐ)
์ฌ๊ธฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ผ๋ฐ ์ ์ ๋ DATABASE๋ฅผ ๋ง๋ค ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์, root ๊ถํ์ผ๋ก ์ฌ์ ์ ํ ์ผ๋ฐ ์ ์ (์ฌ๊ธฐ์๋ wanted)์๊ฒ 'preonboarding'์ด๋ผ๋ DATABASE์ ๊ถํ์ ๋ถ์ฌํด์ฃผ๋ฉด ๋๋ค.
(์๋๋ ์์ ์๋ฌ ํด๊ฒฐ๋ฐฉ๋ฒ์ด๋ค.)
[1] ๋ฐ์ดํฐ๋ฒ ์ด์ค 'preonboarding'์ ๋ํ 'wanted'@'localhost' ์ ์ ์ ๊ถํ์ ํ์ธ
mysql> SHOW GRANTS FOR 'wanted'@'localhost';
[2] 'wanted'@'localhost' ์ ์ ์๊ฒ 'preonboarding' ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ชจ๋ ๊ถํ์ ๋ถ์ฌ
mysql> GRANT [๊ถํ] ON [๋ฐ์ดํฐ๋ฒ ์ด์ค].* TO '[์ฌ์ฉ์]'@'[ํธ์คํธ]';
mysql> GRANT ALL PRIVILEGES ON preonboarding.* TO 'wanted'@'localhost';
(โ ์ถ๊ฐ ๋ช ๋ น์ด )
mysql> FLUSH PRIVILEGES;
๋๋ GRANT ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์์์ง๋ง,
๋ง์ฝ INSERT, UPDATE, DELETE ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ DB์ ๋ณํ๋ฅผ ์ค๋ค๋ฉด FLUSH PRIVILEGES; ๋ช ๋ น์ด๋ฅผ ํตํด ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํด์ค์ผํ๋ค.
GRANT ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ FLUSH PRIVILEGES; ๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค. (FLUSH PRIVILEGES ๋ช ๋ น์ด๋ ์ฑ๋ฅ์ ๋ถํ๋ฅผ ์ฃผ๊ธฐ ๋๋ฌธ์ ๊ผญ ํ์ํ ๋ ์ฌ์ฉํด์ผ ํ๋ค.)
<๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ค์ด๊ฐ ๋ค์ (์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ๋ค์) ์ฌ์ฉํ๋ ๋ช ๋ น์ด (DML)>
1. ๋ฐ์ดํฐ ์กฐํ
mysql> SELECT * FROM ํ
์ด๋ธ์ด๋ฆ;
2. ๋ฐ์ดํฐ ์ฝ์
mysql> INSERT INTO ํ
์ด๋ธ์ด๋ฆ (์ด1, ์ด2, ์ด3, ...) VALUES (๊ฐ1, ๊ฐ2, ๊ฐ3, ...);
3. ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ
mysql> UPDATE ํ
์ด๋ธ์ด๋ฆ SET ์ด1=๊ฐ1, ์ด2=๊ฐ2 WHERE ์กฐ๊ฑด;
4. ๋ฐ์ดํฐ ์ญ์
ํด๋น ์กฐ๊ฑด๋ฌธ(์ด์ ์กฐ๊ฑด)์ ๋ง๋ ๋ฐ์ดํฐ(ํ)๋ง ์ญ์ ํ๋ ๋ช ๋ น์ด
๋ค๋ฅธ ๋ฐ์ดํฐ(๋ค๋ฅธ ํ)์ ์ํฅ์ ๋ฐ์ง ์๊ณ , ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ ๊ทธ๋๋ก ์ ์ง๋๋ค.
mysql> DELETE FROM ํ
์ด๋ธ์ด๋ฆ WHERE ์กฐ๊ฑด;
5. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ํ ์ด๋ธ ์์ฑ
Migration์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ORM(Object-Relational-Mapping) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ๊ด๋ฆฌํ๋ ํ๋ก์ธ์ค ์ค ํ๋์ด๋ค.
Migration์ ์ฌ์ฉํ๋ฉด CREATE TABLE ๋ช ๋ น์ด ์์ด ๊ด๊ณํ ์ด๋ธ๋ค์ ๋ง๋ค์ด๋ผ ์ ์๋ค.
BUT ์ ์์์ CREATE TABLE ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ํ ์ด๋ธ ์์ฑํ ์ ์์ด์ผ ํ๋ค!
mysql> CREATE TABLE ํ
์ด๋ธ์ด๋ฆ (
column1 data_type,
column2 data_type,
column3 data_type,
...
);
6. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ํ ์ด๋ธ ์ญ์
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด ํน์ ํ ์ด๋ธ์ ๊ตฌ์กฐ & ๋ฐ์ดํฐ ๋ชจ๋ ์ญ์ ํ๋ ๋ช ๋ น์ด
mysql> DROP TABLE ํ
์ด๋ธ์ด๋ฆ;
๐ก ํ๋์ ํ ์ด๋ธ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๊ณ ๋ค์ ์์ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
: (DELETE์ด ์๋) DROP ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ณ CREATE ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
DELETE, TRUNCATE, DROP ๋ช ๋ น์ด ์ฐจ์ด์
'๐ก Computer Science > ๐พ Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] Postgres/PostgreSQL ๋ช ๋ น์ด ์ ๋ฆฌ (0) | 2022.03.17 |
---|---|
[ERROR] ERROR: syntax error at or near "-" (0) | 2022.03.01 |