본문 바로가기

BackEnd/DB(SQL)

[DB_MySQL] 이것이 MySQL이다 ch05 MySQL 유틸리티 사용법

728x90
반응형

1. MySQL Workbench 사용 방법

   ◎ MySQL Workbench의 발전과정

      ▷ 2002년에 만들어진 DBDesigner4 제품

         ▶ MySQL의 비주얼 툴로 사용

 

      ▷ 2003년에 MySQL GUI Tools Bundle로 통합

         ▶ 2005년에 MySQL Workbench 프리뷰버전으로 변경되어 발표

         ▶ 2007년부터 본격적으로 개발되고 버전이 업그레이드

 

      ▷ MySQL 5.0 버전부터 본격적으로 MySQL의 GUI 툴로 제공

         ▶ Workbench 5.0 버전은 Windows용으로만 제공

         ▶ 5.1 버전에서 다른 운영체제도 지원

         ▶ 2018년에 8.0 버전 발표

 

   ◎ Workbench의 주요한 기능

      ▷ 데이터베이스 연결 기능

      ▷ 인스턴스 관리

      ▷ 위저드를 이용한 MySQL의 동작

      ▷ 통합된 기능의 SQL 편집기

      ▷ 데이터베이스 모델링 기능

      ▷ 포워드/리버스 엔지니어링 기능

      ▷ 데이터베이스 인스턴스 시작/종료

      ▷ 데이터베이스 내보내기/가져오기

      ▷ 데이터베이스 계정 관리

 

   ◎ MySQL Workbench의 버전과 실행

      ▷ Windows [시작] → [모든 앱] → [MySQL] → [MySQL Workbench 8.0 CE]

 

◎ MySQL Workbench 사용 방법

1. [MySQL Connection] 창
   ▷ Workbench 실행
   ▷ [MySQL Connections] 창
      ▶ 접속될 서버와 사용자, 포트를 선택한 후 접속, MySQL에 등록된 사용자만 접속 가능
      ▶ 서버 등록시 여러개 등록 가능, Connection Name : 접속하는 이름


2. [Connection] 탭
   ▷ Connection Method
      ▶ Standard(TCP/IP), Local Socket/Pipe, Standard TCP/IP over SSH, MySQL Fabric Management Node
          등 4가지 중에 선택 가능
      ▶ 대부분 Standard(TCP/IP) 사용

3. [Parameters] 탭
   ▷ Hostname
      ▶ localhost = 127.0.0.1 = 자신이 컴퓨터(MySQL이 설치된 컴퓨터)
      ▶ 접속할 컴퓨터가 외부에 있다면 접속할 서버 컴퓨터의 IP주소 입력
   ▷ Port
      ▶ 접속할 MySQL 포트 번호, 특별한 경우가 아니면 3306
   ▷ Username, Password, Default Schema 입력

4. [SSL] 탭
   ▷ SSL (Secure Socekt Layer)
      ▶ 보안을 위한 암호 규약, 서버와 클라이언트 통신시 암호화 통해 비밀 유지 & 보안 강화

5. [Advanced] 탭
   ▷ 프로토콜의 압축, 인증 방식 등을 설정

5. [Remote Management] 탭
   ▷ 원격 관리 위해 설정하는 부분
   ▷ 이 부분이 활성화 되기 위해서는 Hostname이 실제 IP 주소
   ▷ 'Native Windows remote management' 선택
      ▶ MySQL 서버가 설치된 OS가 Windows인 경우에만 설정 가능
   ▷ 'SSH login based management'는 SSH 서버 기반으로 원격 접속


6. [System Profile] 탭
   ▷ 접속할 서버의 OS 종류 및 MySQL 설정 파일의 경로 등을 설정
   ▷ [Remote Management]에서 'Native Windows remote management'나
        'SSH login based management'가 선택되어 있어야 활성화
   ▷ [System Type]은 FreeBSD, Linux, MacOS X, OpenSolaris, Windows 등 5가지 중 선택
      ▶ [Installation Type]을 선택 가능
   ▷ [Configuration File]
      ▶ MySQL의 설정 파일이 경로와 함께 지정
   ▷ [Configuration File Section]
      ▶ 서버의 서비스 이름 지정
   ▷ [MySQL Management]
      ▶ MySQL 서비스를 시작하거나 중지하는 시스템 명령어

 

   ◎ MySQL Workbench의 화면 구성

      ▷ 3개의 패널과 쿼리 창으로 구성

      ▷ 내비게이터, Output, SQL Additions

 

   ◎ 내비게이터(Navigator)

 ▷ MySQL의 관리 및 운영을 위한 강력한 도구
 ▷ MySQL 명령문이나 SQL문을 모르더라도 대부분의 작업 수행 가능
 ▷ 내비게이터의 역할
    ▶ [Schemas] 탭
       → 데이터베이스(=스키마) 생성 및 삭제
       → 데이터베이스 개체(테이블, 뷰, 인덱스, 저장 프로시저, 함수 등)를 생성하고 관리
       → 데이터베이스의 속성 조회
    ▶ [Management] 탭
       → MANAGEMENT
       → INSTANCE
       → PERFORMANCE

 ▷ [Navigator]의 [Schemas]는 트리 형태
 ▷ 각각의 항목은 '▶'를 이용해 확장 가능



 

◎ 내비게이터의 [Schemas] 탭 이용해 SQL문 자동 생성
   ▷ 테이블 생성 이외에도 뷰와 다른 구문을 다룰 수 있습니다.
   ▷ 테이블 선택 → Send to SQL Editor → Create Statement

◎ 네비게이터의 [Administration] 탭 이용해 MySQL 관리

1. [MANAGEMENT 부분]
   ▷ [Server Status]
      ▶ 현재 접속된 서버의 상태 파악 가능
      ▶ 현재 서버의 가동 상태, 포트, 환경 파일의 경로, 메모리 상태, CPU 사용 상태 확인 가능
   ▷ [Client Connections]
      ▶ 연결된 클라이언트의 현재 상태가 휴면(Sleep)인지 여부 확인
      ▶ 해당 연결에서 마우스 오른쪽 버튼을 클릭, [Kill Connection(s)]로 연결을 강제로 끊을 수 있습니다.
   ▷ [Users and Privileges]에서 MySQL 사용자 관리
   ▷ [Status and System Variables]
      ▶ MySQL 서버에 설정된 시스템 변수들 확인 / 변경
   ▷ [Data Export] 및 [Data Import/Restore]
      ▶ 백업 및 복원과 관련된 부분
2. [INSTANCE] 부분
   ▷ [Startup/Shutdown]
      ▶ MySQL 서버의 현재 작동 상태 확인
      ▶ MySQL 서버의 중지와 시작 설정
   ▷ [Server Logs]
      ▶ 서버에 기록된 오류, 경고, 방화벽 등의 로그 확인
   ▷ [Options File]
      ▶ MySQL의 핵심 설정 파일인 my.ini 파일
      ▶ 파일 설정 내용을 GUI 모드로 보여줌

3. [PERFORMANCE] 부분
   ▷ [Dashboard]
      ▶ 네트워크, MySQL 서버, InnoDB의 상태를 그래픽으로 보여줌

   ▷ [Performance Reports]
      ▶ 입출력이 오래 걸린 파일, 비용이 많이 든 쿼리문, 데이터베이스 통계 등의 항목들 조회
      ▶ 결과 내보내기 가능
   ▷ [Performance Schema Setup]
      ▶ 성능에 대한 설정
      ▶ 오른쪽 위 <Show Advanced>나 <Hide Advanced> 클릭하면 세부적인 설정 확인 가능

 

 

◎ 쿼리 창(Query Editor)

   ▷ 쿼리 문장(SQL 구문)을 입력/실행하는 텍스트 에디터

   ▷ 쿼리 창 사용 방법

      ▶ Workbench의 상단 제일 왼쪽의 <Create a new SQL tab for executing queries> 아이콘 클릭 또는

          Workbench 메뉴의 [File] → [New Query Tab]을 클릭해 쿼리 창 열기

      ▶ 작업할 데이터베이스를 [Schemas] 탭에서 더블클릭해 선택

      ▶ SQL문 문법에 맞게 입력

      ▶ SQL 구문에 이상이 없다면 툴바의 <Execute the selected portion~~> 아이콘을 클릭하거나 Ctrl + Shift + Enter 눌러서 SQL 문장 실행

      ▶ 아래쪽의 결과 창을 통해 결과 확인

         → 성공된 결과 또는 오류 메시지 확인

   ▷ 한번 연 쿼리 창은 계속해서 SQL 입력해 사용 가능

 

◎ Workbench의 편리한 기능

1. 쿼리 창에서 개체 드래그해서 자동 완성 기능
2. 예약어 대문자나 소문자로 변경하기
   ▷ [Edit] → [Format] 활용
      ▶ UPCASE Keywords 선택 - 대문자로 변경
      ▶ lowercase Keywords 선택 - 소문자로 변경

3. SQL 코드나 설명의 주석처리 방법
   ▷ 주석 처리할 부분 드래그 후 [Edit] → [Format] → [Un/Comment Selection] 선택
   ▷ 한줄은 '--',  여러줄은 '/* */'로 주석 처리 가능

4. 여러 개의 SQL문 실행 가능
   ▷ 모든 SQL문을 실행하지 않는다면 일부만 드래그 선택해 실행

5. 결과를 다양한 방식으로 필터링하거나 파일 형태 저장 가능

6. 실행되는 SQL문 실행 계획 확인 가능
   ▷ 결과 창의 오른쪽 제일 아래로 내려서 [Execution Plan]을 클릭
   ▷ 결과의 그림에 마우스를 올려놓으면 상세한 내용도 확인 가능

 

2. 외부 MySQL 서버 관리하기

◎ 네트워크 환경 비교

   ▷ Windows 1대에 서버와 클라이언트가 모두 설치되된 상태

   ▷ Linux 설치된 MySQL Server에 Windows에 설치된 Workbench가 접속된 상태

 

Workbench로 Linux MySQL 서버에 접속한 경우 주의해야 할 점

   ▷ Linux 컴퓨터 방화벽 설정

      ▶ MySQL의 포트인 3306번을 허용하도록 설정해야 함

   ▷ Linux 컴퓨터의 IP주소를 알고 있어야함

   ▷ Windows 컴퓨터의 Workbench에서 Linux 컴퓨터로 연결고리 만들어 놓아야 합니다.

 

3. 사용자 관리하기

DB 사용자 관리의 필요성

   ▷ 현재까지 사용 방법

      ▶ MySQL 관리자인 root로 접속해 사용

   ▷ 실무에서의 문제

      ▶ MySQL 데이터베이스를 다양한 사용자나 응용프로그램에서 접속해 사용함

      ▶ 모든 사용자가 관리자로 접속을 한다면 데이터가 유출되거나 증발하는 끔찍한 일이 일어날 수 있음

 

◎ MySQL의 사용자 및 역할/권한 관리 실습

1. 팀장님 (Director)
   ▷ 데이터베이스 관리자(DBA)의 역할 부여
   ▷ Workbench 실행하고 [Local instance MySQL]을 클릭해서 접속
      ▶ 사용자를 생성하는 권한은 root에게만 있음
   ▷ [Navigator]의 [Administration] 탭  → [Users and Privileges] 클릭
   ▷ [Users and Privileges] 창에서 오니쪽 아래 <Add Acount> 클릭 후 [Login] 탭의 [Login Name]에 'director' 입력
      ▶ 비밀번호 입력하고 <Apply> 클릭 → director 사용자 등록 확인

   ▷ [Acoount Limits] 탭으로 쿼리 한계 설정 → 0은 제한 없음
   ▷ [Administrative Roles] 에서는 MySQL 자체에 대한 권한 설정
      ▶ [Role]의 <DBA> 체크하여 모든 권한 설정 적용


2. 사장님(CEO)
   ▷ MySQL의 모든 데이터에 읽기 (Select) 권한 부여
   ▷ 계정 등록방법은 '팀장님'의 경우와 같음
   ▷ [Administrative Roles] 탭 클릭
      ▶ 사장님은 MySQL의 읽기(Select)로 계획되어 있음
      ▶ [Global Privileges] 중에서 <SELECT> 체크
      ▶ 왼쪽 Role 중에 <Custom>이 자동으로 체크

3. 일반 직원(staff)
   ▷ ShopDB 데이터베이스의 모든 테이블에 대해 읽기(Select), 쓰기(Insert, Update, Delecte) 권한 부여
   ▷ 스토어드 프로시저 등을 생성(Create Routine)하고 수정(Alter Routine)할 수 있는 권한 부여

 

   ▷ employees 데이터베이스의 테이블에 대해서는 읽기(Select) 권한 부여

   ▷ 각 사용자별 권한 확인

 

 

 

◎ CMD창 코드

1. 팀장(director) : 관리자 DBA 권한
   ▷ TUI
   ▷ CREATE USER 사용자명@ '접속할 IP 대역, IP' IDENTIFIED BY '패스워드';
   ▷ CREATE USER director@ '%' IDENTIFIED BY 'director';
◎권한 부여
   ▷ GRANT 권한 ON 데이터베이스.테이블 TO director@'%' WITH 권한 설정;
   ▷ GRANT ALL ON *.* TO director@'%' WITH GRANT OPTOION;

2. 사장님(CEO) : 읽기만 가능
   ▷ CREATE USER ceo@'%' IDENTIFIED BY 'ceo';
   ▷ GRANT SELECT ON *.* TO ceo@'%';

3. 일반직원(Staff) : 특정 DB만 들어가고 shopdb(읽기/쓰기), employees(읽기) 설정
   ▷ CREATE USER staff@'%' IDENTIFIED BY 'staff';
   ▷ GRANT SELECT, INSERT, UPDATE, DELETE ON shopdb.* TO staff@'%';
   ▷ GRANT SELECT ON employees.* TO staff@'%';

 

◎ 서버의 비중

리눅스가 80~90
윈도우는 10~20

 

MySQL의 유틸리티 사용 방법에 대해 익혀보았습니다.

왠만하면 [Administration] 탭을 수정하지 않아야합니다!!

 

그 이유는 한 번 잘못 수정하게 되면 이후에 사용할때 문제가 발생할 수 있기때문입니다.

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

 

728x90
반응형