강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

mysql의 일반사용자에 대한 권한 설정(mysql 보안사항)

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle15.gif


MySQL의 일반사용자에 대한 권한설정.

 

앞에서 설명드린 바와 같이 Mysql을 설치하고 나면 mysql이라는 데이터베이스가 이미 생성되어 있습니다.

이 mysql이라는 데이터베이스는 MySQL에 존재하는 DB 및 사용자에 대한 권한설정을 하는 데이터베이스입니다 .

즉, MySQL의 모든 DB와 USER에 대한 권한설정을 할 수 있는 마스터데이터베이스(Master Database)라고 할 수 있습니다.

 

다시 설명드리자면 MySQL에는 mysql이라는 마스터데이터베이스가 존재하며 이 mysql이라는 데이터베이스는 아래와 같은  6개의 테이블이 존재 합니다.

user-privilege01.gif

 

1. columns_priv 테이블

columns_priv 라는 테이블에는 MySQL의 모든 특정DB의 특정 User에 대한 특정 테이블의 각 컬럼에 대한 select, insert, update, reference권한을 설정하는 것입니다.

user-privilege02.gif

 

2. db 테이블

이 db라는 테이블에는 특정 DB에 대한 user들의 여러 가지 권한들을 설정하는 곳입니다.

user-privilege03.gif

예를 들어 다음과 같이 kebia라는 데이터베이스의 소유자와 그 권한에 대해서 알아보고자 한다면 다음과 같은 명령어를 사용해 봅니다.

 

user-privilege04.gif

위에서 보면 알 수 있는 바와 같이 kebia라는 데이터베이스의 소유자는 hyung이라는 mysql사용자이며 이 hyung이라는 사용자의 이 kebia라는 데이터베이스에 대한 각종 권한을 볼 수 있습니다.

 

3. tables_priv 테이블

이 테이블은 columns_priv 테이블처럼 각 데이터베이스와 사용자 및 그 테이블들에 대한 아래와 같은 권한들을 설정할 수 있는 테이블입니다.

user-privilege05.gif

 

4. user 테이블

앞장에서 보았겠지만 이 테이블에는 새로운 사용자를 생성할 때 이 테이블에 등록을 하게됩니다.

이 테이블에서는 특정 사용자에 대한 MySQL에 존재하는 모든 데이터베이스에 대한 권한설정을 해두는 곳입니다.

특별히 주의하셔야하는 것은 여기서 설정된 특정사용자의 어떤권한에 대한 사항은 특정 데이터베이스가 아니라 MySQL에 존재하는 모든 데이터베이스에 그 권한이 주어지는 것이라는 점입니다.

따라서, 어떤 사용자를 생성하였다면 아래의 예처럼, host와 user, password항목을 제외한 나머지 권한들은 모두 'N'로 설정해 두는 것이 가장 안전하다.

user-privilege07.gif

그리고, 어떤 특정한 사용자에 대해 특정한 데이터베이스에 대한 권한을 주려면 위에서 보았던 db라는 테이블에서 그 권한설정을 하는 것이 가장 안전한 방법이라 할 수 있다.

 

5. 일반사용자의 권한설정(권장사항)

따라서 위에서 보았던 것처럼, MySQL에 어떤 특정한 사용자를 생성하고 나면 그 사용자에 대한 권한은 다름과 같이 설정해 두는 것이 좋다.

부여하고자 하는 권한

 - 특정한 데이터베이스(예 han1380)에 대한 권한은 특정한 사용자(han1380)에게 모두 부여한다.

 - 그외의 모든 데이터베이스에 대한 권한은 그 특정한 사용자에게는 없어야한다.

 - 즉, 특정한 사용자는 자기소유의 특정한 데이터베이스에는 모든 권한을 가지지만 나머지 데이터베이스에 대해서는 어떠한 권한도 있어서는 아니된다.

 

따라서 다음과 같이 설정하면 될 것이다.

user-privilege08.gif

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  100 명