지금까지 우리는 MySQL 관리자인 root로 접속해서 사용함. 그런데, 실무에서는 MySQL 데이터베이스를 혼자 사용하는 것이 아니라 다양한 사용자나 응용 프로그램에 접속해서 사용함.
MySQL에 접속하는 사람들에게 모두 root의 비밀번호를 알려준다면? 고의든 실수든 문제가 발생한다면 회사의 중요한 데이터가 모두 유출되거나 증발하는 끔찍한 일이 생길 수 있음.
(root는 모든 권한이 있기 때문에 root를 함부로 사용하는 것은 굉장히 위험함.)
이런 것을 방지하기 위해서 root외의 별도의 사용자를 만들고 모든 권한이 아닌 적당한 권한을 부여해서 관리할 필요가 있음.

실습
워크벤치 로컬로 접속

Administration 에서 Users and Privileges 클릭

여기서 사용자를 새로 만들고 관리가능함.

기존 사용자들 목록임.
<팀장님 만들기>
Add Account클릭


--> 팀장님이 만들어진 것을 확인할 수 있음. (director)

팀장에 대한 다양한 권한을 확인할 수 있음. 팀장님은 데이터베이스 관리자 역할이므로 DBA선택하면 모두 선택됨. Apply누르면 적용됨.
<사장님 만들기>
Add Account클릭


--> 사장님이 만들어진 것을 확인할 수 있음. (ceo)

사장님은 MySQL 안의 모든 내용을 읽기 권한을 가지므로 Global Privileges의 SELECT 체크. 그럼 Custom이 자동으로 체크될 것임. Apply누르면 적용됨.
<일반직원 만들기>
Add Account클릭


--> 일반직원이 만들어진 것을 확인할 수 있음. (staff)

일반직원은 전체가 아닌 각각의 데이터베이스에 대해서 권한을 따로따로 줘야함. Schema Privileges에서 추가하면 됨.
[shopdb에 권한주기]
Add Entry클릭

shopdb선택(shopdb에 대한 권한을 주는 것임.)

shopdb에 대해 어떤 권한을 줄건데? --> 일반직원은 shopdb에 대해 테이블 읽기/쓰기, 저장 프로시저 만들고 변경하기 권한을 가짐. SELECT, INSERT, UPDATE, DELETE, CREATE ROUTINE, ALTER ROUTINE 선택. Apply누르면 적용됨.
[employees에 권한주기]
Add Entry클릭

employees선택(employees에 대한 권한을 주는 것임.)

employees에 대해 어떤 권한을 줄건데? --> 일반직원은 employees에 대해 테이블 읽기 권한만 가짐. SELECT선택. Apply누르면 적용됨.
Local instance MySQL 종료(또는 Workbench종료)하고 다시 시작하기.
<팀장님으로 접속하기>

마우스 오른쪽버튼 -> Edit Connection

Username에 director입력 후 Test Connection 누르기. 비밀번호 입력.

director로 로그인.

CREATE DATABASE, DROP DATABASE로 팀장권한 확인해보기.
<사장님으로 접속하기>

사장님은 읽기권한만 있으므로 CREATE, DROP 오류남.

잘 조회되는 것을 확인할 수 있음.

삭제는 안되는 것을 확인할 수 있음.
<일반직원으로 접속하기>

허용된 DB만 보이는 것을 확인할 수 있음.

shopdb에서 조회가능.

shopdb에서 삭제가능.

employees에서 조회가능. 읽기만 됨.
Windows의 Workbench에서 Linux의 MySQL 서버에 접속해서 사용자를 생성해 보자.
-Linux의 MySQL 사용자의 비밀번호는 8자 이상에 대문자, 소문자, 숫자, 특수문자를 섞어서 만들어야 한다. (예: Pass1234#)
-Linux에서 데이터베이스 이름과 테이블 이름은 소문자로 사용해야 한다.
Linux 가상머신의 명령어 모드에서 사용자를 생성해 보자.
-우선 다음 SQL문으로 위에서 만든 사용자를 삭제한다.
DROP USER director;
DROP USER ceo;
DROP USER staff;
-앞의 실습에서 사용자를 생성하는 SQL문도 다뤘다.
-명령어 모드에서 사용자로 접속하려면 mysql -u 사용자이름 -p 명령을 사용한다.