MySQL Workbench는 MySQL 5.0 버전부터 본격적으로 MySQL GUI툴로 제공되었다. 이때는 윈도우용만 제공되었으며 5.1버전 이후부터는 다른 운영체제도 지원하기 시작하였다. 현재는 8.0버전을 지원하고 있다.
MySQL Workbench의 주요한 기능을 요약하면 다음과 같다.
MySQL Connection 창이다. 간단히 말하면 접속될 서버와 사용자, 포트를 선택해서 접속을 시도하게 해주는 창이다.
연결방법으로는 TCP/IP, Local Socket/Pipe, TCP/IP over SSH 등 3가지가 있으며 주로 TCP/IP 기본값을 선택한다. Hostname은 localhost(127.0.0.1)이 기본값이며 외부에 있는 데이터베이스에 접속하고 싶다면 해당 IP를 적어주기만 하면된다. 포트번호는 기본적으로 3306인데 보안을 위해서 변경하기도 한다. Username과 Password를 적어주고 접속하면 끝이다.
네비게이터의 Schemas 탭을 이용해서 SQL문을 자동 생성해보자. 가령 shopdb에서 memberTBL 테이블의 create table 구문을 불러오고 싶다면?
Send to SQL Editor > Create Statement를 선택하면 자동으로 memberTBL 테이블을 생성해주는 쿼리문이 생성된다. 이 외에도 select/insert/update/delete 등의 구문 형식도 가능하다. (꿀팁인듯)
네비게이터의 Administration 탭을 이용해 MySQL을 관리해보자. Server Status를 선택하면 현재 접속된 서버의 상태를 알 수 있다. 현재 서버의 가동상태, 포트, 환경 파일 경로, 메모리 상태, CPU 사용 상태 등을 확인할 수 있다.
Client Connections를 선택하면 연결된 클라이언트와 현재 상태과 휴면인지 아닌지를 확인할 수 있다.
User and Prvileges에서는 MySQL 사용자를 관리할 수 있다.
MySQL 서버는 하드디스크에 설치된 프로그램을 말하며 MySQL 인스턴스는 프로그램이 컴퓨터에서 백그라운드로 서비스를 제공중인 상태를 말한다. 하지만 일반적으로는 MySQL 서버, 인스턴스, 서비스 모두 같은 것으로 취급한다.
Startup / Shutdown 에서 MySQL 서버의 현재 작동 상태를 확인할 수 있다.
Server logs는 서버에 기록된 오류, 경고 등의 로그를 확인할 수 있다.
Option File은 MySQL의 핵심 설정파일인 my.ini 파일의 내용을 GUI로 보여준다.
Dashboard는 네트웤, MySQL 서버, InnoDB 상태를 그래픽으로 보여준다.
Performance Reports는 입출력이 오래 걸린 파일, 비용이 많이 든 쿼리문, 데이터베이스 통계 등의 항목들을 조회하고 결과를 내보내기 할 수 있다.
실무에서는 Windows용 MySQL 보다는 Linux용 MySQL을 더 많이 사용한다. 그런데 Linux는 대부분 명령어 모드로만 사용하기 때문에 Workbench를 사용할 수가 없다.
그렇다고 Workbench를 아예 사용못하는것은 아니다.
Linux에서는 MySQL 서버를 설치하고 Windows에서는 MySQL Workbench를 설치한다음 Linux에서 3306 포트를 열어주고 MySQL 외부접속가능 환경설정을 해주면 윈도우에서 Workbench를 쓸 수 있게 된다.
편리하다는 장점이 있는반면 이 경우에는 보안에 상당히 주의를 기울어야하는 단점이 존재한다. 나중에 시간이 되면 AWS를 이용해서 인스턴스 생성 후 윈도우에서 접속하는 방법을 정리해보도록 하겠다. (해본적은 있는데 쉬운편이다)
지금까지는 우리가 MySQL관리자인 root로 접속해왔다. 하지만 실무에서는 root 대신에 별도의 사용자 계정을 만들고 일부 권한만 할당해서 관리를 해야 한다.
실습을 통해 사용자 및 역할/권한을 관리해보는 실습을 진행해보겠다. 여기서는 Workbench를 이용한 관리에 대한 방법을 살펴보도록 할 것이다.
Administration 탭에서 Users and Privileges를 선택한 다음 Add Account를 클릭한 후 director 계정을 만들어보겠다. Limit to Hosts Matching은 특정한 IP주소만 지정할 수 있다. 그러면 그 IP주소 외의 컴퓨터에서는 현재 생성하는 사용자로 접속할 수 없다. %
는 어디서든 접속이 가능하다는 의미이며 보안에 취약하다.
Account Limits를 보면 최대 쿼리수, 최대 업데이트 수, 시간당 최대 접속수, 실시간 동시 접속 최대 수 등을 설정할 수 있다. 0은 특별한 제한이 없다는 의미이다.
Administrative Role에서는 MySQL 자체에 대한 권한을 설정할 수 있다. DBA를 선택하면 모든 권한이 부여되도록 체크된다. (아마 글로벌 권한인듯)
Shema Prvileges에서는 스키마 별로 권한 부여가 가능하다.
이렇게 Workbench를 통한 사용자 생성과 권한/역할 부여까지 알아봤는데 실제로는 아래처럼 SQL문을 이용해서 처리를 많이 하는 편이기 때문에 어디까지나 참고용으로만 알아두는편이 좋다.
create user staff_id@'%' identified by 'staff_password';
grant select,insert,update,delete on shopdb.* to staff_id@'%';
grant select on employees.* to staff_id@'%';