MariaDB의 root계정은 데이터베이스 서버에 대한 모든 권한을 가지고, 데이터베이스가 지원하는 모든 행위를 할 수 있다.
이 행위에는 데이터베이스, 테이블의 삭제, 다른 사용자 계정의 패스워드 변경, 서버의 강제 종료 등 서버 운영에 문제를 일으킬 수 있는 행위들이 포함된다.
따라서 데이터베이스 관리자들은 권한 문제로 서버 운영상 문제가 발생하는 것을 예방하기 위해, 데이터베이스를 사용하는 조직/인원 별로 '사용자 계정'을 생성하고 그 계정에 특정 권한을 부여하는 방식으로 데이터베이스를 안전하게 관리한다.
이 포스팅은 사용자 계정에 부여할 수 있는 권한의 종류에 대해 정리한다.
아래의 표는 전체에 적용되는 관리자 권한이다.
이 권한은 마리아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/
다음번에는 마리아DB에서 실제 사용자 계정을 생성하고, 권한을 부여하고 취소하는(REVOKE) 예제를 보여드리겠습니다.
감사합니다.
1. 다니엘 바솔로뮤(이동국 옮김). 마리아DB 따라잡기. 의왕: 에이콘(2014). 71~74page.
2. MariaDB 공식 홈페이지 : https://mariadb.com/kb/en/library/grant/
[프로그래머스, SQL 문제] 오랜 기간 보호한 동물(2) with MySQL (0) | 2019.12.22 |
---|---|
[프로그래머스, SQL 문제] 고양이와 개는 몇마리 있을까 외 1문제(GROUP BY) (0) | 2019.12.21 |
[MariaDB 설정 파일 찾는 방법] 모든 Linux 배포판 적용 가능 (0) | 2019.12.19 |
[프로그래머스, SQL 문제] 없어진 기록 찾기(Join) (0) | 2019.12.18 |
[진행중 2] MariaDB 원격접속 설정 - Workbench를 이용한 접속 (0) | 2019.12.15 |