파트 3. 외부 MySQL 서버 관리(Linux 서버), 사용자 관리

1. 외부 MySQL 서버 관리(Linux 서버)


그림1

지금까지 사용한 환경은 위와 같다. 윈도우 컴퓨터 안에 MySQL 서버를 설치했고, MySQL Workbench라는 클라이언트 툴을 설치했다. 같은 컴퓨터 내에서 사용하기 때문에 서버와 클라이언트가 붙어있고 서로 접속할 때 아무 방해조건이 없었다. 실제로는 컴퓨터에는 방화벽이라는 존재가 있어서 외부에서는 아무나 접근할 수 없다. MySQL같은 경우에는 3306포트를 사용한다.


그림2

실무 환경은 위와 같다. 리눅스 컴퓨터에 MySQL서버만 따로 설치해두고, 개발자 자신의 PC에는 MySQL Workbench 클라이언트 툴만 설치해둔다. 그리고 인터넷을 타고 서버로 접속하는 환경이다. 그러면 방화벽이 막고 있는 해당 포트를 열어줘야되는 것이다.

위와 같은 환경을 만들어보자.

그림3

VMware을 이용해 윈도우안에 리눅스가 설치된 가상머신을 부팅하고 로그인 한 뒤에 ip addr을 입력해 가상머신의 ip주소를 얻자.

그림4

내 컴퓨터에 있는 MySQL Workbench에 접속해서 + 버튼을 누르고

그림5

이름, 전에 확인한 ip주소, username password 까지 작성한 뒤 test connection을 누르고 성공했다면 successfully made the MySQL connection이 나오게 된다. 그럼 MySQL Connections에 새로 생긴 것을 선택한다면 이제 리눅스환경의 가상머신 MySQL서버로 접속한 것이다. 여기서 쿼리문을 작성할 때 예약어는 관계없으나 데이터베이스 테이블 이름 등등은 다 소문자로 작성해야한다. 그러므로 그냥 리눅스에서는 다 소문자를 사용하도록 하자.


그림6

이제 내 컴퓨터에서 MySQL Workbench를 사용해서 가상머신 리눅스 서버를 사용할수도, VMware 창을 통해 직접 리눅스 컴퓨터를 조작할 수도 있다. 리눅스 컴퓨터에서 mysql를 사용하고 싶다면 아래와 같이 로그인해서 사용하면 된다.

mysql -u 아이디 -p   // 엔터
패스워드입력  // 후에 사용하면 된다.


2. 사용자 관리


지금까지는 MySQL 관리자인 root로 접속해서 사용했다. 실무에서는 MySQL 데이터베이스를 혼자 사용하는 것이 아니라 다양한 사용자나 응용 프로그램에 접속해서 사용한다. 따라서 모두 root를 사용할 수 없고 적당한 권한을 부여해서 관리해야할 필요가 있다.

그림7


위와 같은 권한을 주는 실습을 해보자. 그림8

Administration -> user and Privileges 에서 권한을 부여할 수 있다. 위 그림을 따라가면 최종족으로 User에 추가된 것을 확인할 수 있다.


그림9

Administrative Roles 탭에서 맨위에 DBA를 체크해주게 되면 사실상 모든 권한이 부여되게 되고 Apply를 누르면 적용된다. 이렇게 데이터베이스 관리자 팀장님의 사용자 권한을 부여했다.


그림10

팀장님을 만든 것처럼 똑같이 ceo를 만들어주고 Administrative Roles탭에서 select만 클릭하고 Apply해주면 사장님은 모든 내용에 대한 읽기 권한을 부여받는다.


그림11

일반직원의 경우는 전체에 대한 권한이 아니라 각각의 데이터베이스에 대해 권한을 따로 줘야하기 때문에 Schema Privileges 탭에서 Add Entry를 클릭한다.


그림12

권한을 부여할 데이터베이스를 선택하고 apply를 누른다.


그림13

이제 부여할 권한을 선택하고 apply를 누르면 된다. 이와 같이 다른 데이터베이스도 마찬가지로 권한을 부여하면 된다.

그림14
그림15

이제 첫 화면에서 오른쪽 클릭 -> Edit connection -> 사용자이름 변경 한 뒤에 접속하면 해당 사용자로 접속할 수 있게 된다.

cf) 명령어 모드에서 사용자 생성 삭제하기

// 사용자 생성
CREATE USER 사용자이름@'%'IDENTIFIED BY '비밀번호';

 // shopdb 데이터베이스에 다음 권한을 이름에게 부여
GRANT SLELECT,INSERT,UPDATE,DLELTE ON shopdb.*TO 사용자이름@'%';

// 사용자 삭제
DROP USER 사용자이름; 



본 포스팅은 ‘이것이 MySQL이다’를 읽고 공부한 내용을 바탕으로 작성하였습니다.


© 2021. By Backtony