데이터베이스/MySQL

[MySQL] 사용자 계정 조회, 생성, 삭제, 권한 부여하기

webvillain 2021. 5. 31. 11:26

1. 사용자 조회

use mysql;

mysql> select user, host from user;

 

2. 사용자 계정 생성

  CREATE USER  ‘사용자ID’@’host’  IDENTIFIED BY  '패스워드';
-- 아이디 'tester', 비밀번호 'test1234' 사용자 계정 생성
mysql> create user 'tester'@'localhost' identified by 'test1234';

 

3. 사용자 계정 정보 확인

  SHOW GRANTS FOR  '사용자ID'@'host';
-- 'tester' 사용자 계정의 권한 조회
SHOW GRANTS FOR tester@localhost;

 

4. 새로운 사용자 로그인

  mysql -u [사용자ID] -p[비밀번호];
mysql -u tester -ptest1234;

 

5. 사용자 계정 삭제

  DROP USER  '사용자ID'@'host';
-- 'tester' 사용자 계정 삭제
DROP USER tester@localhost;

 

6. GARNT - 사용자에게 권한 부여

  GRANT  사용자등급  ON  테이블명  TO  사용자ID  [IDENTIFIED BY 비밀번호];
  GRANT 
권한리스트  ON  테이블명  TO  사용자ID  [WITH GRANT OPTION];

▶ 사용자 등급

사용자 등급 내용
CONNECT DBMS에 접속하기 위한 권한 부여
RESOURCE 사용자(tester)가 객체(생성, 수정, 삭제), 데이터(입력, 수정, 조회, 삭제) 권한  부여
DBA ALL (시스템 관리에 앞서 필요한 모든 권한 부여)

 

권한 종류 : ALL, SELECT, INSERT, DELETE, UPDATE, ALTER 등

  - 이외에도 많은 시스템 권한을 줄 수 있다  > 더 많은 시스템 권한 보러 가기

 

WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여한다.

 

-- 'tester' 사용자 계정에게 모든 테이블에 대한 모든 권한을 부여한다.
mysql> GRANT ALL ON *.* To tester;

-- 'tester' 사용자 계정에게 'notice' 테이블에 대한 모든 권한을 부여하고, 다른 사람에게 권한을 부여할 수 있는 권한까지 부여한다.
mysql> GRANT ALL ON notice TO tester WITH GRANT OPTION;

--  test 데이터베이스의 모든 테이블에 대해 데이터 조회와 갱신만 가능하다.
mysql> GRANT SELECT, UPDATE ON test.* TO tester;

 

7. REVOKE - 사용자 권한 취소

  REVOKE  사용자등급  ON  테이블명  FROM  사용자ID;
  REVOKE
 [GRANT OPTION FOR]  권한리스트  ON  테이블명  TO  사용자ID  [CASCADE];

GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소한다.

CASCADE : 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소한다.

 

-- 'tester' 사용자 계정의 모든 테이블에 대한 모든 권한을 취소한다. 
REVOKE all ON *.* FROM tester;

-- 'tester' 사용자 계정의 'notice' 테이블에 대한 권한 중, update 권한을 다른 사람에게 부여할 수 있는 권한만 취소한다.
REVOKE GRANT OPTION FOR update ON notice FROM tester;