행궁동 데이터 엔지니어

반응형

MariaDB의 root계정은 데이터베이스 서버에 대한 모든 권한을 가지고, 데이터베이스가 지원하는 모든 행위를 할 수 있다. 

 

이 행위에는 데이터베이스, 테이블의 삭제, 다른 사용자 계정의 패스워드 변경, 서버의 강제 종료 등 서버 운영에 문제를 일으킬 수 있는 행위들이 포함된다. 

 

따라서 데이터베이스 관리자들은 권한 문제로 서버 운영상 문제가 발생하는 것을 예방하기 위해, 데이터베이스를 사용하는 조직/인원 별로 '사용자 계정'을 생성하고 그 계정에 특정 권한을 부여하는 방식으로 데이터베이스를 안전하게 관리한다.

 

이 포스팅은 사용자 계정에 부여할 수 있는 권한의 종류에 대해 정리한다.

 

사용자 권한의 분류 3가지

  • 전체 서버에 적용되는 권한 : 데이터베이스 서버에 포함된 모든 데이터베이스와 테이블에 적용된다.
  • 데이터베이스, 테이블, 컬럼 단위 권한 : 보다 세부적인 권한으로 데이터베이스, 테이블, 테이블의 컬럼 별로 권한을 적용할 수 있다.
  • 기타 부가적인 권한 : 부가적인 권한으로 '시간당 요청 가능한 쿼리 수'와 같은 것들이 있다.

 

전체 서버에 적용되는 권한

  • 아래의 표는 전체에 적용되는 관리자 권한이다.

  • 이 권한은 마리아DB 데이터베이스 서버에 포함된 모든 데이터베이스와 테이블에 적용 된다.

권한

설명

CREATE USER

CREATE USER 문을 사용해서 사용자를 생성하는 권한

FILE

LOAD DATA INFILE문과 LOAD_FILIE() 함수를 사용하는 권한

PROCESS

SHOW PROCESSLIST 명령을 사용하는 권한

RELOAD

FLUSH 문을 사용하는 권한

REPLICATION CLIENT

SHOW MASTER STATUS SHOW SLAVE STATUS 명령을 사용하는 권한

REPLICATION SLAVE

복제 마스터 서버에서 이루어진 업데이트 내용을 받을 권한

SHOW DATABASES

서버에서 데이터베이스의 목록을 볼 수 있는 권한

SHUTDOWN

mysqladmin shutdown 명령을 사용해서 서버를 중지할 수 있는 권한

SUPER

CHANGE MASTER TO, PURGE LOGS 명령과 전역 변수를 세팅하고 다른 사용자의 스레드를 강제로 중지하는 등의 최고 사용자가 사용하는 구문을 사용하는 권한

 

데이터베이스와 테이블 단위 권한

  • 다음 표는 데이터베이스와 테이블 단위 권한을 나열한다. 

  • 각각의 권한은 특정 데이터베이스나 테이블 단위로 적용된다.

권한

설명

ALTER

인덱스와 테이블을 변경할 권한

ALTER ROUTINE

프로시저와 함수를 변경하거나 삭제하는 권한

CREATE

데이터베이스와 테이블을 생성하는 권한

CREATE ROUTINE

프로시저와 함수를 생성하는 권한

CREATE TEMPORARY TABLES

임시 테이블을 생성하는 권한

CREATE VIEW

뷰를 생성하는 권한

DELETE

테이블에서 행을 삭제하는 권한

DROP

전체 데이터베이스와 테이블을 삭제하는 권한

EVENT

이벤트 스케줄러에서 이벤트를 변경, 생성 및 삭제하는 권한

EXECUTE

함수와 프로시저를 실행하는 권한

INDEX

인덱스를 생성하거나 삭제하는 권한

INSERT

새로운 데이터를 테이블에 입력하는 권한

LOCK TABLES

테이블에 락을 걸거나 락을 다시 푸는 권한

SELECT

테이블에서 데이터를 읽는 권한

SHOW VIEW

SHOW CREATE VIEW 문을 사용하는 권한

TRIGGER

CREATE TRIGGER DROP TRIGGER 문을 사용하는 권한

UPDATE

테이블에서 행을 수정하는 권한

  • 이 외에 테이블의 개별 컬럼에 컬럼 단위 권한도 적용할 수 있다(사용자별 SELECT, INSERT, UPDATE 할 수 있는 권한 설정).

기타 부가적인 권한과 제한

  • 위에 포함되지 않은 기타 부가적인 권한과 제한들이다.

  • ALL PRIVILEGES를 이용해서 사용자에게 모든 권한을 부여할 수 있고(GRANT OPTION을 제외한), 사용자의 쿼리 요청에 제한을 둘 수도 있다.

권한

설명

USAGE

실제로는 아무것도 하지 않지만 사용자에 대한 전역적인 설정을 변경하기 위해 사용할 수 있다.

ALL PRIVILEGES

사용자에게 사용 가능한 모든 권한을 부여하기 위해 사용할 수 있다. GRANT OPTION 권한을 부여하지는 않는다. ALL로 줄여서 사용할 수 있다

GRANT OPTION

가진 권한을 다른 사용자에게 주기 위한 권한을 사용자에게 부여한다. GRANT 구문 마지막에 넣는다. (WITH GRANT OPTIONS;)

 

제한

설명

MAX-QUERIES_PER_HOUR

사용자별로 시간당 호출할 수 있는 SQL 구문이나 쿼리의 수 설정. 데이터를 변경하는 쿼리도 모두 포함한다.

MAX_UPDATES_PER_HOUR

사용자별로 시간당 호출할 수 있는 데이터를 변경하는 쿼리의 수 설정. 조회성 쿼리는 제외된다.

MAX_CONNECTIONS_PER_HOUR

사용자가 시간당 접속을 시작할 수 있는 수

MAX_USER_CONNECTIONS

사용자가 데이터베이스 서버에 동시에 맺을 수 있는 연결 수. 만약 0으로 세팅하면 최대수인 MAX_CONNECTIONS으로 세팅한 것과 동일하다. MAX_CONNECTIONS 또한 0이라서 동시에 연결할 수 있는 수에 제한이 없다.


이상으로  마리아DB 권한 종류에 대한 정리를 마칩니다. 

MariaDB 권한과 관련해서는 아래 공식 홈페이지에 상세히 정리되어 있으니, 더 궁금하신 분들은 참고하시기 바랍니다.

 

https://mariadb.com/kb/en/library/grant/

 

GRANT

Create accounts and set privileges or roles.

mariadb.com

다음번에는 마리아DB에서 실제 사용자 계정을 생성하고, 권한을 부여하고 취소하는(REVOKE) 예제를 보여드리겠습니다.

감사합니다.

 

1. 다니엘 바솔로뮤(이동국 옮김). 마리아DB 따라잡기. 의왕: 에이콘(2014). 71~74page.
2. MariaDB 공식 홈페이지 : https://mariadb.com/kb/en/library/grant/
반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band