sql

[mysql] USER 권한 관리

scone 2022. 6. 23. 15:19

[USER 권한 관리]

  • 실습 환경을 먼저 만들어 줍시다.
CREATE DATABASE testdb;            # 디비 생성
SHOW DATABASES;                    # 만든 디비 확인
CREATE USER 'scone'@'localhost' identified by '1234';   # 유저 생성
USE mysql;                         # 유저 정보가 있는 mysql 디비 사용
SELECT host, user from users;       # 생성한 유저 확인

유저가 잘 만들어져 있습니다.

 

  • 사용자의 권한을 확인합니다.
SHOW GRANTS FOR 'scone'@'localhost';

현재 localhost로 접근 가능한 scone의  권한이 들어 있습니다.

 

  • 생성한 디비, testdb에 대한 권한을 scone에게 주겠습니다.
GRANT ALL ON testdb.* to 'scone'@'localhost';

권한 전부를 준다.  testdb의 모든 것을,  로컬호스트로 접근가능한 스콘에게

 

  • 권한이 어떻게 부여됐나 보겠습니다.
SHOW GRANTS FOR 'scone'@'localhost'

GRANT ALL PRIVILEGES ON 'testdb'.*

라는게 추가되었다.

 

  • 권한을 삭제하겠습니다.
REVOKE ALL ON 'testdb'.* from 'scone'@'localhost';

scone 이라는 계정으로부터 testdb의 모든 권한을 줬던 것을 전부 다시 되돌립니다.

 

권한이 지워진 것을 볼 수 있습니다.

 

 

  • 만약 수정사항이 보이지 않는다면 새로고침 해줍니다.
FLUSH PRIVILEGES;

 


[정리] 

SHOW GRANTS FOR 'scone'@'localhost';                # 유저에게 주어진 권한 확인
GRANT ALL ON testdb.* to 'scone'@'localhost';       # testdb에 있는 모든 권한을 유저에게 부여
REVOKE ALL ON testdb.* from 'scone'@'localhost';    # testdb의 모든 권한을 유저로부터 회수
FLUSH PRIVILEGES;                                   # 새로고침

 

* 는 보통 모든 것 을 의미한다.

데이터 베이스의 이름은 ' ' 로 감싸지 않아도 된다.