๋ฐ์ํ
- Mysql์ ์ฌ์ฉ์๋ ์ฌ์ฉ์์ ๊ณ์ ๋ฟ๋ง ์๋๋ผ ์ฌ์ฉ์์ ์ ์์ฃผ์๊น์ง ๊ณ์ ์ ์ผ๋ถ๊ฐ ๋๋ค.
- Mysql์์ ๊ณ์ ์ ์ธ๊ธํ ๋๋ ํญ์ ์์ด๋์ ํธ์คํธ๋ฅผ ํจ๊ป ๋ช ์ํด์ผํ๋ค.
- % ๋ฌธ์๋ ๋ชจ๋ ํธ์คํธ๋ช ์ ์๋ฏธํ๋ค.
์์1 ) 'test_id'@'127.0.0.1'
์์2) 'test_id'@'%'
๊ณ์
# ๋ชจ๋ ๊ณ์ ํ์ธํ๊ธฐ
SELECT user, host FROM mysql.user;
# mysql ๊ธฐ๋ณธ ๋ด์ฅ ๊ณ์ ํ์ธํ๊ธฐ
SELECT user, host FROM mysql.user WHERE user LIKE 'mysql.%';
# ์ฌ์ฉ์ ์์ฑ
CREATE USER '{์ ์ ๋ช
}'@'%' IDENTIFIED BY '{๋น๋ฐ๋ฒํธ}';
# ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
ALTER USER '{์ ์ ๋ช
}'@'%' IDENTIFIED BY '{์๋ก์ด ๋น๋ฐ๋ฒํธ}';
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๋ ๊ฒ์ด ๋ณด์์ ์ข๋ค.
- ์ด๋ฏธ Mysql์ ์ฐ๋ํด์ ์ฌ์ฉํ๊ณ ์๋ ์๋น์ค๊ฐ ์๋ค๋ฉด, ์๋น์ค๋ฅผ ๋ฉ์ถ์ง ์๊ณ ์๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ์ผ์ด๋ค. ์ด ๊ฐ์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด '์ด์ค ๋น๋ฐ๋ฒํธ'๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์ด์ค ๋น๋ฐ๋ฒํธ : ํ๋์ ๊ณ์ ์ 2๊ฐ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋์์ ์ค์ ํ์ฌ ๋ ์ค ์๋ฌด๊ฑฐ๋ ์ ๋ ฅํด๋ ๋ก๊ทธ์ธ์ด ๋จ
๋ฐฉ๋ฒ
- ์ด์ค ๋น๋ฐ๋ฒํธ ์ค์ (์๋กญ๊ฒ ์ค์ ํ ๋น๋ฐ๋ฒํธ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ ๋น๋ฐ๋ฒํธ๊ฐ ๋๊ณ , ๊ธฐ์กด ๋น๋ฐ๋ฒํธ๊ฐ ์ธ์ปจ๋๋ฆฌ ๋น๋ฐ๋ฒํธ๊ฐ ๋จ)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฐ๊ฒฐ๋ ์๋น์ค์ ์ค์ ํ์ผ์์ ์๋ก์ด ๋น๋ฐ๋ฒํธ๋ก ๋ณ๊ฒฝํ๊ณ ๋ฐฐํฌ ๋ฐ ์ฌ์์
- ์๋น์ค์ ์ฌ์์์ด ์๋ฃ๋๋ฉด ์ธ์ปจ๋๋ฆฌ ๋น๋ฐ๋ฒํธ ์ญ์
# ์ด์ค ๋น๋ฐ๋ฒํธ ์ค์
ALTER USER '{์ ์ ๋ช
}'@'%' IDENTIFIED BY '{์๋ก์ด ๋น๋ฐ๋ฒํธ}' RETAIN CURRENT PASSWORD;
# ์ธ์ปจ๋๋ฆฌ ๋น๋ฐ๋ฒํธ ์ญ์
ALTER USER '{์ ์ ๋ช
}'@'%' DISCARD OLD PASSWORD;
๊ถํ
- ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌํ ๋๋ 'GRANT' ๋ช ๋ น์ ์ฌ์ฉํ๋ค.
- 'TO' ํค์๋ ๋ค์๋ ๊ถํ์ ๋ถ์ฌํ ๋์ ์ฌ์ฉ์๋ฅผ ๋ช ์ํ๋ค.
- 'ON' ํค์๋ ๋ค์๋ ์ด๋ค DB์ ์ด๋ค ์ค๋ธ์ ํธ์ ๊ถํ์ ๋ถ์ฌํ ์ง ๊ฒฐ์ ํ ์ ์๋ค.
- ๊ธ๋ก๋ฒ ๊ถํ์ ๋ถ์ฌํ ๋๋ ON ๋ค์ *.*์ ์ฌ์ฉํ๋ค. (Mysql ์๋ฒ ์ ์ฒด๋ฅผ ์๋ฏธํจ)
# ์์
GRANT EVENT ON *.* TO 'user'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON employees.* TO 'user'@'localhost';
GRANT SELECT, INSERT, UPDATE(dept_name), DELETE ON employees.department TO 'user'@'localhost';
# ๊ณ์ ์ ๋ถ์ฌ๋ ์ญํ ๋๋ ๊ถํ ๋ณด๊ธฐ
SHOW GRANTS;
์ญํ
# ์ญํ ์์ฑ
CREATE ROLE
role_emp_read,
role_emp_write;
# ์ญํ ์ ๊ถํ ๋ถ์ฌ
GRANT SELET ON employees.* TO role_emp_read;
GRANT INSERT, UPDATE, DELETE ON employees.* TO role_emp_write;
# ์ฌ์ฉ์์๊ฒ ์ญํ ๋ถ์ฌ
GRANT role_emp_read, role_emp_write TO 'emp_writer'@'127.0.0.1';
# ์ญํ ํ์ฑํ
SET ROLE 'role_emp_read';
- ์ฌ์ฉ์์๊ฒ ์ญํ ์ ๋ถ์ฌํ ๋ค ์ญํ ์ ํ์ฑํํด์ผ ์ฌ์ฉํ ์ ์๋ ์ํ๊ฐ ๋๋ค.
- activate_all_roles_on_login์ด OFF๋ก ๋์ด์๋ค๋ฉด, ๊ณ์ ์ด ๋ก๊ทธ์์๋๋ค๊ฐ ์ฌ๋ก๊ทธ์ธํ๋ฉด ์ญํ ์ด ๋นํ์ฑํ ์ํ๋ก ์ด๊ธฐํ๋์ด ๋ฒ๋ฆฐ๋ค.
#๋ก๊ทธ์ธ์ ์ญํ ํ์ฑํํ๊ธฐ
SET GLOBAL activate_all_roles_on_login=ON;
๋ฐ์ํ
'๐DB > ๐ฌ MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Mysql] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ๋ฐ ๋ณต์&๋ณต์ (0) | 2024.08.16 |
---|---|
[MySQL] Memory allocation error: 1038 Out of sort memory, consider increasing server sort buffer size ์๋ฌ (0) | 2023.04.04 |
[MySQL] CRUD (0) | 2021.10.18 |
[MySQL] ํ ์ด๋ธ (0) | 2021.10.18 |
[MySQL] Window์์ ์ ์ํ๊ธฐ (0) | 2021.10.18 |