Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 데이터베이스 서버의 권한을 제어하는 5가지 핵심 테이블

MySQL 서버를 설치하면 mysql이라는 이름의 시스템 데이터베이스가 자동으로 생성됩니다. 이 mysql 데이터베이스에는 다섯 개의 핵심 권한(grant) 테이블이 포함되어 있으며, MySQL 서버는 바로 이 테이블들을 통해 데이터베이스 서버 전반의 접근 권한을 통제합니다. 각 테이블의 역할을 살펴보겠습니다.

user 테이블

user 테이블에는 사용자 계정 정보와 전역(global) 권한 컬럼이 저장됩니다. MySQL은 이 테이블을 참조하여 특정 호스트에서 들어오는 연결 요청을 허용할지 거부할지를 결정합니다. user 테이블에서 부여된 권한은 MySQL 서버의 모든 데이터베이스에 적용되기 때문에, 가장 높은 수준의 권한을 담당한다고 할 수 있습니다.

db 테이블

db 테이블에는 데이터베이스 수준의 권한이 저장됩니다. MySQL은 이 테이블을 통해 사용자가 어느 호스트에서 어떤 데이터베이스에 접근할 수 있는지를 판단합니다. db 테이블에서 데이터베이스 수준으로 부여된 권한은 해당 데이터베이스뿐 아니라 그 안에 속한 모든 객체, 즉 테이블, 트리거, 뷰, 저장 프로시저 등 전체에 적용됩니다.

tables_priv 테이블

테이블 수준의 권한을 관리하는 테이블입니다. 여기서 부여된 권한은 해당 테이블과 그 테이블이 포함한 컬럼 전체에 적용됩니다.

columns_priv 테이블

컬럼 수준의 권한을 관리하는 테이블입니다. 여기서 부여된 권한은 테이블 전체가 아니라 오직 특정 컬럼에만 적용되며, 민감한 정보가 담긴 컬럼만 선별적으로 접근을 허용해야 하는 경우에 매우 유용합니다.

procs_priv 테이블

저장 함수(stored function)와 저장 프로시저(stored procedure)에 대한 권한을 관리하는 테이블입니다. 루틴 단위로 실행 권한을 세밀하게 제어할 수 있습니다.

이처럼 MySQL은 계정·전역 → 데이터베이스 → 테이블 → 컬럼 → 저장 루틴 순으로 단계적으로 세분화된 권한 체계를 운영합니다. 이를 활용하면 사용자에게 업무 수행에 필요한 최소한의 권한만 부여하는 '최소 권한 원칙'을 효과적으로 구현할 수 있습니다.