mysql의 일반사용자에 대한 권한 설정(mysql 보안사항)
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 6,533 조회
- 0 추천
- 목록
본문
MySQL의 일반사용자에 대한 권한설정.
앞에서 설명드린 바와 같이 Mysql을 설치하고 나면 mysql이라는 데이터베이스가 이미 생성되어 있습니다. 이 mysql이라는 데이터베이스는 MySQL에 존재하는 DB 및 사용자에 대한 권한설정을 하는 데이터베이스입니다 . 즉, MySQL의 모든 DB와 USER에 대한 권한설정을 할 수 있는 마스터데이터베이스(Master Database)라고 할 수 있습니다.
다시 설명드리자면 MySQL에는 mysql이라는 마스터데이터베이스가 존재하며 이 mysql이라는 데이터베이스는 아래와 같은 6개의 테이블이 존재 합니다.
1. columns_priv 테이블 columns_priv 라는 테이블에는 MySQL의 모든 특정DB의 특정 User에 대한 특정 테이블의 각 컬럼에 대한 select, insert, update, reference권한을 설정하는 것입니다.
2. db 테이블 이 db라는 테이블에는 특정 DB에 대한 user들의 여러 가지 권한들을 설정하는 곳입니다. 예를 들어 다음과 같이 kebia라는 데이터베이스의 소유자와 그 권한에 대해서 알아보고자 한다면 다음과 같은 명령어를 사용해 봅니다.
위에서 보면 알 수 있는 바와 같이 kebia라는 데이터베이스의 소유자는 hyung이라는 mysql사용자이며 이 hyung이라는 사용자의 이 kebia라는 데이터베이스에 대한 각종 권한을 볼 수 있습니다.
3. tables_priv 테이블 이 테이블은 columns_priv 테이블처럼 각 데이터베이스와 사용자 및 그 테이블들에 대한 아래와 같은 권한들을 설정할 수 있는 테이블입니다.
4. user 테이블 앞장에서 보았겠지만 이 테이블에는 새로운 사용자를 생성할 때 이 테이블에 등록을 하게됩니다. 이 테이블에서는 특정 사용자에 대한 MySQL에 존재하는 모든 데이터베이스에 대한 권한설정을 해두는 곳입니다. 특별히 주의하셔야하는 것은 여기서 설정된 특정사용자의 어떤권한에 대한 사항은 특정 데이터베이스가 아니라 MySQL에 존재하는 모든 데이터베이스에 그 권한이 주어지는 것이라는 점입니다. 따라서, 어떤 사용자를 생성하였다면 아래의 예처럼, host와 user, password항목을 제외한 나머지 권한들은 모두 'N'로 설정해 두는 것이 가장 안전하다. 그리고, 어떤 특정한 사용자에 대해 특정한 데이터베이스에 대한 권한을 주려면 위에서 보았던 db라는 테이블에서 그 권한설정을 하는 것이 가장 안전한 방법이라 할 수 있다.
5. 일반사용자의 권한설정(권장사항) 따라서 위에서 보았던 것처럼, MySQL에 어떤 특정한 사용자를 생성하고 나면 그 사용자에 대한 권한은 다름과 같이 설정해 두는 것이 좋다. 부여하고자 하는 권한 - 특정한 데이터베이스(예 han1380)에 대한 권한은 특정한 사용자(han1380)에게 모두 부여한다. - 그외의 모든 데이터베이스에 대한 권한은 그 특정한 사용자에게는 없어야한다. - 즉, 특정한 사용자는 자기소유의 특정한 데이터베이스에는 모든 권한을 가지지만 나머지 데이터베이스에 대해서는 어떠한 권한도 있어서는 아니된다.
따라서 다음과 같이 설정하면 될 것이다.
|
관련자료
-
이전
-
다음