본문 바로가기
IT

MySQL 권한 - 1

by 힁구띠 2022. 9. 5.

MySQL 8.0 권한(Privilege)

MySQL 5.7 버전까지 권한은 글로벌 권한과 객체 단위의 권한으로 구분됐다.

데이터베이스, 테이블 외 객체에 적용되는 권한을 글로벌 권한, 데이터베이스나 테이블을 제어하는 데 필요한 권한을 객체 권한이라고 한다. 객체 권한은 GRANT 명령어로 권한을 부여할 때 특정 권한을 반드시 명시해야 한다. 글로벌 권한은 GRANT 명령어에서 특정 객체를 명시하지 말아야 한다. 하지만 ALL은 글로벌과 객체 권한  두 가지 용도로 사용될 수 있다. 특정 객체에 ALL 권한이 부여되면 해당 객체에 적용될 수 있는 모든 객체 권한을 부여하고 글로벌로 ALL이 사용되면 글로벌 레벨에서 사용 가능한 모든 권한을 부여한다.

 

권한 종류

글로벌 권한

FILE: File_priv 파일

creat ROLE: Create_role_priv 서버 관리

CREATE TABLESPACE: Create_tablespace_priv 서버 관리

CREATE USER: Create_user_priv 서버 관리

DROP ROLE: Drop_role_priv 서버 관리

PROCESS: Process_priv 서버 관리

PROXY: See proxies_priv table 서버 관리

RELOAD: Reload_priv 서버 관리

REPLICATION CLIENT: Repl_client_priv 서버 관리

REPLICATION SLAVE: Repl_slave_priv 서버 관리

SHOW DATABASES: show_db_priv 서버 관리

SHUTDOWN: Shtdown_priv 서버 관리

SUPER: Super_priv 서버 관리

USAGE: Synonym for "no privileges" 서버 관리

 

객체 권한

EVENT: Event_priv 데이터베이스

LOCK TABLES: Lock_tables_priv 데이터베이스

REFERENCES: References_priv 데이터베이스

CREATE: Create_priv 데이터베이스 & 테이블 &인덱스

GRANT OPTION: Grant_priv 데이터베이스 & 테이블 & 스토어드 프로그램

DROP: Drop_priv 데이터베이스 & 테이블, 뷰

ALTER ROUTE: Alter_routine_priv 스토어드 프로그램

CREATE ROUTE: Create_routine_priv 스토어드 프로그램

EXECUTE: Excute_priv 스토어드 프로그램

ALTER: Alter_priv 테이블

CREATE TEMPORARY TABLES 테이블

DELETE: Delete_priv 테이블

INDEX: Index_priv 테이블

TRIGGER: Trigger_priv 테이블

INSERT: Insert_priv 테이블 & 칼럼

SELECT: Select_priv 테이블 & 칼럼

UPDATE: Update_priv 테이블 & 칼럼

CREATE VIEW: Create_view_priv 뷰

SHOW VIEW: Show_view_priv 뷰

 

객체 및 글로벌

ALL {PRIVILEGES]: Synonym for "all privileges" 서버 관리

 

MySQL 8.0 버전부터는 MySQL 5.7 버전의 권한에 다음의 동적 권한이 추가되었다. 그리고 MySQL 5.7 버전부터 제공된 정적 권한이라고 한다. 정적 권한은 MySQL DB의 소스코드에 고정적으로 명시돼 있는 권한을 의미하고 동적 권한은 MySQL 서버가 시작되면서 동적으로 생성한 권한을 뜻한다. 예) MySQL 서버의 컴포넌트나 플러그인이 설치되면 그때 등록되는 권한을 동적 권한이라고 한다.

 

INNODB_REDO_LOG_ARCHIVE: 리두 로그 관리

RESOURCE_GROUP_ADMIN: 리소스 관리

RESOURCE_GROUP_USER: 리소스 관리

BINLOG_ADMIN: 백업 & 복제 관리

BINLOG_ENCRYPTION_ADMIN: 백업 & 복제 관리

BACUP_ADMIN: 백업 관리

CLONE_ADMIN: 백업 관리

GROUP_REPLICATION_ADMIN: 복제 관리

REPLICATION_APPLIER: 복제 관리

REPLICATION_SLAVE_ADMIN: 복제 관리

CONNECTION_ADMIN: 서버 관리

ENCRYPTION_KEY_ADMIN: 서버 관리

ROLE_ADMIN: 서버 관리

SESSION_VARIABLES_ADMIN: 서버 관리

SET_USER_ID: 서버 관리

SHOW_ROUTINE: 서버 관리

SYSTEM_USER: 서버 관리

SYSTME_VARIABLES_ADMIN: 서버 관리

TABLE_ENCRYPTION_ADMIN: 서버 관리

VERSION_TOKEN_ADMIN: 서버 관리

XA_RECOVER_ADMIN: 서버 관리

APPLICATION_PASSWORD_ADMIN: 이중 비밀번호 관리

AUDIT_ADMIN: Audit 로그 관리

 

MySQL 5.7 버전까지 SUPER 권한이 데이터베이스 관리를 위해 반드시 필요했지만, MySQL 8.0 부터는 SUPER 권한은 나누어졌다. MySQL 8.0 부터는 백업 관리자와 복제 관리자 개별로 꼭 필요한 권한만 부여할수 있게 된 것이다. 

특정 사용자에게 권한부여시 GRANT 명령어를 사용한다. GRANT 명령어는 아래와 같이 작성하는데, 각 권한의 특성에 따라 GRANT 명령의 ON 절에 명시되는 오브젝트(DB나 테이블)내용이 달라져야한다.

GRANT privilege_list ON db.table TO 'user'@'host';

 

'IT' 카테고리의 다른 글

CITUS DB - 기본 개념  (0) 2022.09.19
스파크 실행과 언어 API  (0) 2022.09.07
스파크 데이터 구조  (0) 2022.08.26
스파크의 기본 개념 - 1  (0) 2022.07.25
SQL의 기본 개념 - 2  (0) 2022.07.13

댓글