1. MySQL์ ๊ธฐ๋ณธํ
์ด๋ธ
MySQL์ ์ฒ์ ์ค์น์์ 'mysql'์ด๋ผ๋ ๋ฐ์ดํ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ค. ์ด ๋ฐ์ดํ๋ฒ ์ด์ค๋ db,host,user,
tables_priv,columns_priv, function๋ผ๋ ๊ธฐ๋ณธํ
์ด๋ธ์ ๊ฐ์ง๊ณ ์๋ค. ์ด ํ
์ด๋ธ๋ค์ MySQL์ ๊ถํ๊ณผ
๊ด๋ จ์ด ์๋ค.
2. MySQL์ ๊ธฐ๋ณธํ
์ด๋ธ๊ณผ ๊ถํ
(1) userํ
์ด๋ธ : ์ ์ฒด์๋ฒ์ ์ ์ฉ๋๋ ๊ถํ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๋ค.
(2) hostํ
์ด๋ธ : ํธ์คํธ์ ์ฒด์ ๋ํ ์๋ฒ์ ์ ๊ทผ๊ถํ์ ๋ถ์ฌํ๋ค.
(3) dbํ
์ด๋ธ : ๊ฐ๊ฐ์ ๋ฐ์ดํ๋ฒ ์ด์ค์ ์ ๊ทผ ๊ถํ์ ์ค์ ํ๋ค.
(4) tables_priv : ํ
์ด๋ธ์ ๋ํ ์ ๊ทผ๊ถํ์ ์ค์ ํ๋ค.
(5) columns_priv : ํ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ค์ ํ๋ค.
(6) function : ์ฌ์ฉ์์ ์ mysqlํจ์๊ฐ ๋ฑ๋ก๋๋ ํ
์ด๋ธ์ด๋ค.
3. userํ
์ด๋ธ
(1) ๊ฐ์: ์ ์ฒด ์๋ฒ์ ์ฐ์ ์ ์ผ๋ก ์ ์ฉ๋๋ ํ
์ด๋ธ๊ณ ์ฌ์ฉ์๋ณ ๊ถํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ
์ด๋ธ์ด๋ค.
(2) ํน์ง
MySQL์๋ฒ์ ์ฌ์ฉ์ ๊ณ์ ์ ๋ง๋ค๊ณ ํจ์ค์๋๋ฅผ ๋ถ์ฌํ๋ ํ
์ด๋ธ์ด๋ค. userํ
์ด๋ธ์ ๊ถํ๊ณผ
dbํ
์ด๋ธ์ ๊ถํ์ ์๋นํ ์ฐจ์ด๊ฐ ์๋ค. userํ
์ด๋ธ์์ ๊ถํ์ ํ๊ฐํ๋ ๊ฒ์ ์ ์ฒด
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ชจ๋ ๊ถํ์ ํ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ๋ฐ๋ผ์, ๊ธฐ๋ณธ๊ฐ์ผ๋ก 'N'์ ์ฃผ์ด์ผ ํ๋ค.
(3) ๊ธฐ๋ณธ๊ตฌ์กฐ
mysql> show columns from user;
+-----------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-----------------+------+-----+---------+-------+
| Host | char(60) binary | | PRI | | |
| User | char(16) binary | | PRI | | |
| Password | char(16) binary | | | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Reload_priv | enum('N','Y') | | | N | |
| Shutdown_priv | enum('N','Y') | | | N | |
| Process_priv | enum('N','Y') | | | N | |
| File_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
+-----------------+-----------------+------+-----+---------+-------+
(4) userํ
์ด๋ธ์ ๋ฒ์ ํ๋๊ฐ
1) Host : ํธ์คํธ ์ด๋ฆ์ด๋ IP์ฃผ์๋ฅผ ์
๋ ฅํ ์ ์๋ค. ๋ํดํธ๋ localhost์ด๋ค. '%'๋ผ๋ ์์ผ๋
๊ฐ์ ์ฌ์ฉํ๋ค. '%'๋ ์ผ๋ฐ์ ์ธ ์ด์์ฒด์ ์ '*'์ ์ ์ฌํ๋ค. ํน์ ํ ์ด๋ฆ์ด ์ฃผ์ด์ง์ง
์์ผ๋ฉด ๋ชจ๋ ์ด๋ฆ์ ํฌ๊ดํ๋ค. ์ฆ ์ด๋ ํ ํธ์คํธ๋ก๋ถํฐ๋ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
2) User : ์์ผ๋ ๊ฐ์ ํ์ฉํ์ง ์๋๋ค. ๋ชจ๋ ์ ์ ์ ํด๋นํ๋ ๊ณต๋ฐฑ์ผ๋ก ์ง์ ํ ์๋ ์๋ค. ์ฐ๊ฒฐ
ํ๋ ค๋ ๋ชฉ๋ก์ ๊ณต๋ฐฑ ์ฌ์ฉ์ ์ด๋ฆ์ด ์๋ค๋ฉด ํด๋ผ์ด์ธํธ์์ ์ค์ ๋ก ์ง์ ํ ์ด๋ฆ ๋์ ์
๊ทธ ์ฌ์ฉ์๋ ์ต๋ช
์ฌ์ฉ์, ์ด๋ฆ์ด ์๋ ์ฌ์ฉ์๋ก์ ๊ฐ์ฃผ๋๋ค.
3) Password : ๊ณต๋ฐฑ์ผ๋ก ๋ ์ ์๋ค. ์ด๊ฒ์ ์๋ฌด ๋น๋ฐ๋ฒํธ๋ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ ๊ฒ
์ด ์๋๋ผ, ์ฌ์ฉํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ํ์ง ์๊ณ ์ฐ๊ฒฐํด์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค.
(5) ์ ๊ทผ๊ถํ
Select_priv : select๋ฌธ์ ์ํํ ์ ์๋ ๊ถํ
Insert_priv : insert๋ฌธ์ ์ํํ ์ ์๋ ๊ถํ
Update_priv : update๋ฌธ์ ์ํํ ์ ์๋ ๊ถํ
Delete_priv : delete๋ฌธ์ ์ํํ ์ ์๋ ๊ถํ
Create_priv : create๋ฌธ์ ์ํํ๊ฑฐ๋ ํ
์ด๋ธ์ ์์ฑํ ์ ์๋ ๊ถํ
Drop_priv : drop๋ฌธ์ ์ํํ๊ฑฐ๋ ๋ฐ์ดํ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ ์ ์๋ ๊ถํ
Reload_priv : mysqladmin reload๋ช
๋ น์ ์ด์ฉํ์ฌ ์ ๊ทผ์ ๋ณด๋ฅผ ๋ค์ ์ฝ์ ์ ์๋ ๊ถํ
Shutdown_priv : mysqladmin shutdown๋ช
๋ น์ ์ด์ฉํ์ฌ ์๋ฒ๋ฅผ ์ข
๋ฃ์ํฌ ์ ์๋ ๊ถํ
Process_priv : ์๋ฒ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๊ถํ
File_priv : select into outfile๊ณผ load data infile๊ณผ ๊ฐ์ ๋ช
๋ น์ ์ด์ฉํ์ฌ ํ์ผ์ ์ฝ๊ณ
์ธ ์ ์๋ ๊ถํ
Grant_priv : ์์ ์ ๊ถํ์ ๋จ์๊ฒ ๋ถ์ฌํ ์ ์๋ ๊ถํ
References_priv : ์ฌ์ฉํ์ง ์์
Index_priv : ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ญ์ ํ ์ ์๋ ๊ถํ
Alter_priv : alter table๋ฌธ์ ์ํํ ์ ์๋ ๊ถํ
(์ฐธ๊ณ ) ์ ๊ทผ๊ถํ์์ ์ ์ํ ์
(1) select_priv๋ ํ
์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ถํ๋ง์ ์ง์ ํ๋ค. select 2+3;๊ณผ ๊ฐ์ select
์๋ ํด๋นํ์ง ์๋ ๊ถํ์ด๋ค.
(2) ์ผ๋ฐ์ฌ์ฉ์์๊ฒ๋ file_priv๊ถํ์ ์ฃผ์ง ์๋ ๊ฒ์ด ์ข๋ค. ํนํ MySQL์๋ฒ๋ฅผ ์์คํ
์ root
์ฌ์ฉ์๋ก ์คํ์ค์ผ ๋๋ ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ ํนํ ์ฃผ์ง ๋ง์์ผ ํ๋ค.
(3) process_priv๋ ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ ๊ถํ์ ์ฃผ์ง ์๋ ๊ฒ์ด ์ข๋ค.
(4) shutdown_priv๋ ๊ถํ์ด ์๋ ์ฌ์ฉ์์๊ฒ MySQL์๋ฒ ์ข
๋ฃ๋ฅผ ํ๊ฒ ํด์ฃผ๋ฏ๋ก ์ ์ํด์ผ ํ๋ค.
(5) ๋จ์ํ ํ
์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ชฉ์ ์ธ ์ฌ์ฉ์์๊ฒ๋ update, delete, drop, alter๊ถํ์
์ฃผ์ง ์๋ ๊ฒ์ด ์ข๋ค.
4.dbํ
์ด๋ธ
(1) ๊ฐ์: ๋ณดํต ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํ๋ฒ ์ด์ค๊ฐ ์กด์ฌํ๋ ๋ฐ dbํ
์ด๋ธ์ ๊ฐ๊ฐ์ ๋ฐ์ดํ๋ฒ ์ด์ค์ ๋ํ
ํผ๋ฏธ์
์ ์ค์ ํ๋ค.
(2) ๊ธฐ๋ณธ๊ตฌ์กฐ
mysql> show columns from db;
+-----------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-----------------+------+-----+---------+-------+
| Host | char(60) binary | | PRI | | |
| Db | char(64) binary | | PRI | | |
| User | char(16) binary | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
+-----------------+-----------------+------+-----+---------+-------+
(3) ํน์ง: userํ
์ด๋ธ๊ณผ ๋งค์ฐ ์ ์ฌํ๊ณ , ์ฐจ์ด์ ์ passwordํ ๋์ ์ ์ด ํ
์ด๋ธ์ dbํ์ ๊ฐ๋๋ค.
์ด ํ
์ด๋ธ์ ํน์ ํ ๋ฐ์ดํ๋ฒ ์ด์ค์์ ์ด๋ ํ ์ฌ์ฉ์์ ๊ถํ์ ๊ด๋ฆฌํ๋ค. user ํ
์ด๋ธ
ํผ๋ฏธ์
์ ์ ์ฒด์๋ฒ์ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ userํ
์ด๋ธ์ ๊ถํ์ด dbํ
์ด๋ธ์ ๊ถํ๋ณด๋ค
์ฐ์ ํ๊ฒ ๋๋ค. ์ฆ userํ
์ด๋ธ์ insert๊ถํ์ด ์๋ค๋ฉด, ์ด ์ฌ์ฉ์๋ ์ ์ฒด ๋ฐ์ดํ๋ฒ ์ด์ค์
dbํ
์ด๋ธ์ insert๊ถํ์ ๊ฐ์ง๊ฒ ๋๋ค.
(์ฐธ๊ณ ) ํจ๊ณผ์ ์ธ ์ฌ์ฉ์๊ด๋ฆฌ
userํ
์ด๋ธ์์๋ ํผ๋ฏธ์
์ ๊ฐ์ง ์๋ ์ฌ์ฉ์๋ฅผ ์์ฑํ๊ณ , ์ฌ์ฉ์dbํ
์ด๋ธ์์ ๊ถํ์ ์ป์ด์ผ ํจ๊ณผ์
์ด๋ค.
5. hostํ
์ด๋ธ
(1) ๊ธฐ๋ณธ๊ตฌ์กฐ
mysql> show columns from host;
+-----------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-----------------+------+-----+---------+-------+
| Host | char(60) binary | | PRI | | |
| Db | char(64) binary | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
+-----------------+-----------------+------+-----+---------+-------+
(2) ํน์ง: hostํ
์ด๋ธ์ ์ฌ์ฉ์์๊ฒ ํธ์คํธ๋จ์๋ก ๊ธฐ๋ณธ๊ถํ์ ์ค์ ํ ์ ์๋๋ก ํ๋ค. MySQL์ด
์ํ๊ถํ์ ๊ฒ์ฌํ ๋ dbํ
์ด๋ธ์์ ์ฌ์ฉ์์ด๋ฆ๊ณผ ํธ์คํธ๋ฅผ ๊ฒ์ฌํ๋ค. ๋ง์ฝ ํธ์คํธํ๋๊ฐ
๋น์ด์๋ ์ฌ์ฉ์๋ฅผ ๋ง๋๊ฒ ๋๋ฉด, hostํ
์ด๋ธ์ ๊ฒ์ฌํ์ฌ ๋ ๊ฐ์ง ๊ฐ๊ฐ์ ๊ถํ๋ค์ด
์ค์ฒฉ๋๋ ๊ถํ์ ๋ถ์ฌํ๊ฒ ๋๋ค.
6. tables_priv์ columns_privํ
์ด๋ธ
์ด ๋๊ฐ์ ํ
์ด๋ธ์ dbํ
์ด๋ธ์ด ์ํํ๋ ์ผ๋ค์ ๋ณด๋ค ์ธ๋ถํ์ํจ ๊ฒ์ด๋ค. ์ฆ, ์ด๋ ํ ์คํผ๋ ์ด์
์ด
๋จผ์ dbํ
์ด๋ธ์ ์ฐธ์กฐํ๊ณ ๋ค์์ table_priv, ๋ง์ง๋ง์ผ๋ก columns_priv๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ค. ๋ง์ฝ ์ด์ค
ํ๋๋ผ๋ ํ๊ฐ๊ฐ ๋์ด ์์ผ๋ฉด ์คํผ๋ ์ด์
์ด ํ๊ฐ๋๋ค. ์ด ๋๊ฐ์ ํ
์ด๋ธ์ ์ด์ฉํ์ฌ ์ฌ์ฉ์์ ๊ถํ์
ํ๋จ์๊น์ง ์์ธํ๊ฒ ์ธ๋ถํํ ์ ์๋ค. ์ด ํ
์ด๋ธ์ ๋ด์ฉ์ SQL์์ grant์ revoke๋ฅผ ์ด์ฉํ์ฌ ์กฐ์
ํ ์ ์๋ค.
7. ๊ถํ๋ถ์ฌ์ ๋จ๊ณ
(1) MySQL์ userํ
์ด๋ธ์์ ์ฌ์ฉ์๊ฐ ์ฐ๊ฒฐํด์ค๋ ํธ์คํธ์ด๋ฆ๊ณผ ์ฌ์ฉ์์ด๋ฆ์ ์ฐพ๋๋ค.
(2) ๋ช
๋ น์ด๊ฐ ์
๋ ฅ๋๋ฉด userํ
์ด๋ธ์ ์ ๋ณด์ ์ผ์นํ๋ ๊ฒ์ด ์กด์ฌํ๊ณ ๊ถํ์ด ํ๊ฐ๋์ด ์์ผ๋ฉด ์์ฒญ
ํ ์์
์ ๋ฐ๋ก ์ํ๋๋ค. ๊ทธ๋ ์ง ์๋ ๊ฒฝ์ฐ์๋ dbํ
์ด๋ธ=> tables_priv => columns_priv ์์
๋ก ๊ถํ์ ์ฐพ๋๋ค.
์ถ์ฒ: https://czar.tistory.com/177 [๋๋ ๊ฐ๋ฐ์๋?]