본문 바로가기
Database/Mysql

Mysql/Mariadb 권한 확인 (grant / revoke)

by 화곡공룡 2020. 12. 15.
반응형

Mysql/maria DB에서 사용하는 권한에 대해 알아보겠습니다.

Mysql/mariad db의 권한에 대해 알아보겠습니다.

1. 권한 설정

권한 설정은 유저와 host를 명확히 하여 주어야 하며 password도 설정이 가능하며

with grant option은 설정시 맨 마지막에 적어야 한다.

grant '권한명' on db.'table 또는 *(전체)' to 'user'@'host' ;

grant '권한명' on db.'table 또는 *(전체)' to 'user'@'host' identified by 'password';

grant '권한명' on db.'table 또는 *(전체)' to 'user'@'host' identified by 'password' with grant option;

mysql> grant select, insert on test.* to 'test'@'localhost' ;
권한 명 설명
ALTER 테이블 스키마 변경
ALTER ROUTINE 스토어드 프로시저 변경
CREATE 테이블 생성
CREATEROUTINE 스토어드 프로시저 생성
CREATE TEMPORARY TABLES 임시 테이블 생성
CREATEVIEW 뷰 생성
DELETE 레코드 삭제
DROP 테이블 삭제
EVENT 이벤트 생성 및 변경
EXECUTE 프로시저 실행
INDEX 인덱스 생성/삭제
INSERT 레코드 INSERT
LOCK TABLES 테이블 잠금(InnoDB 테이블의 레코드 잠금아님)
SELECT 레코드 SELECT
SHOW VIEW 뷰의 생성 스크립트 조회
TRIGGER 트리거 생성/삭제
UPDATE 레코드 UPDATE
GRANT OPTION 권한 부여 옵션
ALL [PRIVILEGES] GRANT OPTION 권한율 제외한 여기에 명시된 모든권한
CREATE USER 사용자 생성
FILE MySQL 서버에서 파일 접근 (SELECT INTO OUTFILE ... , LOAD DATA IN ...)
PROCESS 프로세스의 목록과 각 프로세스의 실행 쿼리 조회 (SHOW PROCESSLIST)
RELOAD 로그 및 권한 또는 테이블 정보에 대한FLUSH 명령 사용 권한
REPLICATION CLIENT SHOW MASTER[SLAVE] STATUS 명령의 사용
REPLICATION SLAVE 복제를 위해 바이너리 로그를 읽어갈 수 있는 권한
(복제용 사용자 계정이 가져야 하는 권한 )
SHOW DATABASES DB의 목록 조회 권한
SHUTDOWN MySQL 서버의 종료 권한
반응형

2. 권한 해제

부여된 권한을 다시 회수할 수 있다.

ex) revoke '권한명' on schema.'table 또는 *(전체)' from 'user'@'host' ;

mysql> revoke insert on test.* from 'test'@'localhost' ;

3. 유저별 권한 확인

유저에 대한 권한을 확인 할 수 있다.

mysql> select host, user, select_priv, insert_priv, delete_priv, update_priv
    -> from mysql.user ;
+-----------------+---------------+-------------+-------------+-------------+-------------+
| host            | user          | select_priv | insert_priv | delete_priv | update_priv |
+-----------------+---------------+-------------+-------------+-------------+-------------+
| localhost       | root          | Y           | Y           | Y           | Y           |
| localhost       | mysql.session | N           | N           | N           | N           |
| localhost       | mysql.sys     | N           | N           | N           | N           |
| %               | root          | Y           | Y           | Y           | Y           |
| 192.168.56.101  | test_job_user | N           | N           | N           | N           |
| localhost       | test_job_user | N           | N           | N           | N           |
| localhost       | test          | Y           | N           | N           | N           |
+-----------------+---------------+-------------+-------------+-------------+-------------+

4. 유저별의 개별 DB 권한 확인

유저에 대한 개별 권한을 확인 할 수 있다.

mysql> select host, user, select_priv, insert_priv, delete_priv, update_priv
    -> from mysql.user ;
+-----------------+---------------+-------------+-------------+-------------+-------------+
| host            | user          | select_priv | insert_priv | delete_priv | update_priv |
+-----------------+---------------+-------------+-------------+-------------+-------------+
| localhost       | root          | Y           | Y           | Y           | Y           |
| localhost       | mysql.session | N           | N           | N           | N           |
| localhost       | mysql.sys     | N           | N           | N           | N           |
| %               | root          | Y           | Y           | Y           | Y           |
| 192.168.56.101  | test_job_user | N           | N           | N           | N           |
| localhost       | test_job_user | N           | N           | N           | N           |
| localhost       | xtra          | N           | N           | N           | N           |
+-----------------+---------------+-------------+-------------+-------------+-------------+

5. 나의 계정 권한 확인

현재 접속한 계정의 권한을 확인 할 수 있다.

mysql> show grants ;
+-------------------------------------------------------------------------+
| Grants for test@localhost                                               |
+-------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '*XXXX' |
| GRANT SELECT ON 'test'.* TO' test'@'localhost'                          |
+-------------------------------------------------------------------------+

이상 Mysql/MariaDB 권한에 대해 설명하였습니다.

 

반응형

댓글