MySQL 워크벤치로 사용자 관리하기
DB에는 기업의 매우 중요한 데이터들이 저장되어 있고 이것은 큰 가치를 지닌 자산이기에 아무나 접근해서는 안됩니다. 따라서 실제로 기업에서 운영하는 DB 환경에서는 관리자 또는 DBA를 제외하고 대부분의 사용자는 절대 권한을 가진 root 계정으로 접속하지 않는것이 일반적입니다.


나머지 사용자나 사내 시스템을 개발하는 프로그래머들은 권한이 제한된 다른 계정을 사용합니다. 어떤 DBMS나 권한을 제어할 수 있는 쿼리를 제공합니다. MySQL의 워크벤치는 이러한 쿼리를 사용하지 않고 편리하게 권한 및 사용자를 관리할 수 있는 도구를 제공합니다.

MySQL에서는 권한에 관련된 몇 가지 용어가 있는데, 권한(Privileges)은 SELECT 권한, INSERT 권한, CREATE 권한 등 각각의 사용 가능한 행동을 말합니다. 역할(Role)은 권한의 집합입니다. "사용자 A Role에는 SELECT, INSERT 권한이 있으며, B Role에는 SELECT 권한만 있다." 라는 식입니다.



사용자 권한 관리하기
dba전용 계정을 만든다는 가정하에 계정 생성 및 권한을 부여해보도록 하겠습니다.

워크벤치를 열고 Navigator > Management > Users and Privileges 탭 클릭




Add Accounts를 클릭하고 계정명과 비밀번호 등을 입력 후 Apply 클릭. 저는 dba용 계정을 생성한다고 가정하고 dbauser를 계정명으로 넣었습니다.



Account Limits에 가면 방금 생성한 dbauser계정의 최대 쿼리 실행 수, 최대 수, 시간당 최대 접속 수, 실시간 동시 접속 가능 수 등 여러가지 제한(Limits) 설정을 할 수 있습니다. 




Administrative Roles에 가면 MySQL DBMS 자체에 대한 권한을 설정할 수 있습니다. 미리 정의 되어 있는 ROLE들이 있는데, DBA ROLE을 클릭하면 우측 Global Privileges 탭의 모든 권한들이 자동으로 체크되어 모든 권한을 가지게 됩니다.

Apply를 클릭하여 적용하면 현재 설정중인 dbauser 계정은 모든 권한을 가지게 됩니다.




워크벤치를 통해서 권한을 부여했는데, 다음과 같이 쿼리를 직접 수행한것과 같습니다. 단지 워크벤치를 통해 GUI 환경에서 편하게 작업한 것 뿐 내부적인 동작은 같습니다.
CREATE USER dbauser@'%' IDENTIFIED BY 'dbauser'; -- 계정 생성
GRANT ALL ON *.* TO dbauser@'%' WITH GRANT OPTION; -- 권한 부여





특정 스키마(DB) 권한 부여
특정 스키마에 대한 권한을 설정할때는 Schema Privileges 탭을 사용합니다.


스키마를 선택 후 OK 클릭




권한을 체크하고 Apply 클릭.


블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,