본문 바로가기
MySQL Admin Guide/MySQL Ver.5.1 Admin Guide

5장 ACCOUNT , 권한 관리 (5) 권한관리

by 모모레 2009. 4. 27.

1. 권한 관리
MySQL은 권한에 대한 내용을 mysql database(schema)에서 관리한다. 여기에 몇개의 테이블에 데이터를 저장하여 그것으로 접근 및 권한에 대한 내용을 관리한다. 그러면 여기서는 권한에 대한 내용이 어떻게 관리되는지 5.1을 기준으로 확인해 보자.

2. 권한 관리 테이블
MySQL에서는 mysql database(schema)에 다음의 테이블을 사용하여 권한 및 계정에 대한 정보를 관리한다.

table explaining
user 서버에 접근할때 접속가능한지 아닌지 확인하는데 필요한 데이터를 가진 테이블이다. 여기에 기록된 권한은 global 권한으로 서버의 모든 데이터베이스에 적용되는 권한이다.
db 해당 유저가 어느 데이터베이스(schema)에 접근이 가능한지 알려주는 테이블이다. 여기에 기록된 권한은 각 데이터베이스의 오브젝트에 모두 적용된다.(모든 테이블과 stored program)
host 이 테이블은 db테이블과 결합하여 사용되며, 각 db 테이블에 대해 여러 host가 접근가능한지 확인한다.
tables_priv db 테이블과 비슷하게 사용된다. 테이블 레벨의 권한을 저장한다.
columns_priv 이 테이블도 db테이블과 비슷하고, column 레벨의 권한을 저장하는 테이블이다.
procs_priv stored routine에 대한 내용이 저장되는 테이블이고, 각각 싱글의 stored routine에 대한 권한을 저장한다.

  • 접근에 대한 체크시 mysql database의 user, db, host테이블의 정보를 이용하여 확인한다.

2. 각 테이블에 대한 권한 정보 비교
권한 정보를 가지고 있는 테이블에 대한 내용을 비교하여 확인해 보자.

Table Name user db
범위 지정 컬럼들 Host Host
  User Db
  Password User
권한 관련 컬럼들 Select_priv Select_priv
  Insert_priv Insert_priv
  Update_priv Update_priv
  Delete_priv Delete_priv
  Index_priv Index_priv
  Alter_priv Alter_priv
  Create_priv Create_priv
  Drop_priv Drop_priv
  Grant_priv Grant_priv
  Create_view_priv Create_view_priv
  Show_view_priv Show_view_priv
  Create_routine_priv Create_routine_priv
  Alter_routine_priv Alter_routine_priv
  Execute_priv Execute_priv
  Trigger_priv Trigger_priv
  Event_priv Event_priv
  Create_tmp_table_priv Create_tmp_table_priv
  Lock_tables_priv Lock_tables_priv
  References_priv References_priv
  Reload_priv  
  Shutdown_priv  
  Process_priv  
  File_priv  
  Show_db_priv  
  Super_priv  
  Repl_slave_priv  
  Repl_client_priv  
  Create_user_priv  
보안관련 컬럼들 ssl_type  
  ssl_cipher  
  x509_issuer  
  x509_subject  
리소스 제한에 대한 컬럼들 max_questions  
  max_updates  
  max_connections  
  max_user_connections  

  • Event_priv와 Trigger_priv는  Version 5.1.6 이후 부터 추가된 컬럼이다.
  • Admin 관련 권한은 user 테이블에만 존재한다.
  • FILE은 user 테이블에만 있는 권한으로 Admin권한은 아니지만, 데이터베이스에 독립적으로 적용되는 권한이다.



Table Name tables_priv columns_priv
범위 지정 컬럼들 Host Host
  Db Db
  User User
  Table_name Table_name
    Column_name
권한 관련 컬럼들 Table_priv Column_priv
  Column_priv  
그 외 관련 컬럼들 Timestamp Timestamp
  Grantor  

  • 위 테이블의 Timestamps와 Grantor는 아직 사용되지 않는 컬럼이다.



Table Name procs_priv
범위 지정 컬럼들 Host
  Db
  User
  Routine_name
  Routine_type
권한 관련 컬럼들 Proc_priv
그 외 관련 컬럼들 Timestamp
  Grantor

  • 위 테이블의 Timestamps와 Grantor는 아직 사용되지 않는 컬럼이다.