본문 바로가기

Back-End 공부/Database

[Database] 사용자 관리, 사용자 권한부여(GRANT, REVOKE)

📌 사용자관리

✅ DCL(Data Control Language) - GRANT(권한 부여), REVOKE(권한 회수)

  • 신규 사용자 생성
    • CREATE USER 'testuser'@'localhost' IDENTIFIED BY ‘testpw’;
      • 어떤 곳에서도 원격접속을 가능하도록 하려면 localhost대신 % 기호 사용
  • 사용자 삭제
    • DROP USER 'testuser'@'localhost';
  • 사용자 목록 조회
    • SELECT User, Host FROM mysql.user;
  • 특정DB의 특정테이블에 특정권한 부여
    • GRANT SELECT ON board.author TO ‘testuser'@'localhost';
  • 특정DB의 특정테이블에 특정권한 회수
    • REVOKE SELECT ON board.author FROM ‘testuser'@'localhost';
  • 권한 변경사항 적용 ⭐
    • FLUSH PRIVILEGES;
  • 특정 사용자 권한 조회
    • SHOW GRANTS FOR 'testuser'@'localhost';

 

 

💻 사용자관리 실습 

 

1. user 생성

 
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'testpw';
 

 

2. user 권한 조회

 
SHOW GRANTS FOR 'testuser'@'localhost';
 

 

3. user에 INSERT 권한 부여

 
GRANT SELECT ON board.author TO 'testuser'@'localhost';
 

 

4. 권한 변경사항 적용

 
FLUSH PRIVILEGES;
 

 

5. user 권한 조회

 
SHOW GRANTS FOR 'testuser'@'localhost';
 

 

6. testuser생성

이름은 SELECT 권한을 준 testuser

password는 testpw

 

7. testuser에서 SELECT 권한을 부여받은 author 테이블 조회

 
select * from author;
 

 

 

8. testuser에서 SELECT 권한을 부여받지 않은 post 테이블 조회

 
select * from post;
 

Error Code: 1142. SELECT command denied to user 'testuser'@'localhost' for table `board`.`post` 0.000 sec

 

9. testuser 삭제 후 원격접속을 가능하도록 % 기호써서 다시 생성

 
DROP USER 'testuser'@'localhost';
CREATE USER 'testuser'@'%' IDENTIFIED BY 'testpw';
 

 

 

10. testuser에서 원격 접속할 경우 testuser의 Connection의 Hostname은 원격접속지의 주소로 설정

IP주소(xx.xxx.xx.xx) 혹은 도메인주소(xxxxxx.com)을 입력하면 됨

 

11. testuser 재삭제

 
DROP USER 'testuser'@'%';