카테고리 없음2013. 6. 20. 10:20

 

11-3. 데이터베이스 서버 구축 및 운영

      - Windows에서 리눅스의 MySQL 서버 접속

 

● Windows에서 리눅스의 MySQL 서버 접속

 

 

< 실습 2 >

 

MySQL의 기본적인 보안을 설정하고, Windows에서 리눅스의 MySQL 서버에서 접속해서

사용하도록 설정하자. 

 

 

 

 

1. [ Fedora Server ]

 

보안에 중요한 DB 사용자 'root'의 비밀번호를 지정하자.

 

 

1-1 "mysqladmin" 명령으로 DB 사용자 'root'의 비밀번호를 '1234'로 변경하도록 한다.

 

 

1-2 이제는 "mysql" 명령으로 그냥 접속은 안 된다.

"mysql -u root -p" 명령으로 접속한 후에, 비밀번호를 별도로 입력해야 한다.

 

 

 

 

2. [ Windows Client(=호스트OS) ]

 

 MySQL 서버에 접속하기 위해서, 꼭 MySQL 서버가 설치된 컴퓨터에서만

MySQL 클라이언트를 사용하는 것은 아니다.

당연히 다른 컴퓨터에서도 MySQL 서버에 접속할 수 있어야 할 것이다.

이번에는 Windows에서 Fedora Server에 설치된 MySQL 서버에 접속해 보도록 하자.

 

 

2-1 웹 서버에 접속하기 위해서는 웹 클라이언트(웹 브라우저)가 필요하듯이,

MySQL 서버에 접속하기 위해서는 MySQL 클라이언트가 필요하다.

Internet Explorer로 http://www.mysql.com/에 접속해서 Windows용 MySQL 클라이언트를 다운로드하여 설치하자.

 

[Downloads] -> [Downloads] -> [MySQL Community Server] -> [5.5]에서

'Windows'를 클릭해서 들어가자.

이번에는 'Windows downloads' 부분의 'Windows Essential (x86)' 을 다운로드하자.

※ 리눅스용은 server와 client 프로그램을 별도로 제공하지만 Windows용은 한 개 파일에

server와 client가 모두 포함되어 있으므로, 설치 시에 필요한 파일을 선택해서 설치해야 한다.

 

 

2-2 다운로드한 파일 'mysql-essential-5.5.0-m2-win32.msi'를 더블클릭해서 설치를 시작한다.

처음 환영 메시지가 나오면 <Next>를 클릭한다.

 

 

2-3 Setup Type에서는 'Custom'을 선택한다.

그냥 Typical로 설치하면 Windows용 MySQL 서버도 설치된다.

우리는 MySQL 서버는 페도라에 설치한 것을 사용할 것이므로,

MySQL 클라이언트만 설치할 것이다.

 

 

2-4 [Custom Setup] 화면에서 'MySQL Server' 앞의 디스크 모양 아이콘을 클릭해서

[This feature will not available]을 선택해서 설치되지 않도록 설정한다.

 

같은 방식으로 'Client Program' 아래의 'MySQL Server Instance Config'도

설치되지 않도록 설정한다.

 

최종적으로는 다음 그림과 같이 'Client Programs'에 있는

'MySQL Command Line Shell'과 'MySQL Command Line Utilities'만 설치되도록 설정한다.

 

또, 'Client Programs'를 클릭한 후 <Changes>를 클릭해서 설치될 디렉토리를 "C:\mysql\"로 입력하자.

 

<OK>와 <Next>를 클릭하고, 다음 화면에서 <Install>을 클릭하면 설치가 진행된다.

 

 

2-5 설치가 완료되면 <Next>를 두 번 클릭하고 'Register the MySQL Server now'

체크를 해제하고 <Finish>를 클릭해서 설치를 완료한다.

 

 

 

 

3. [ Windows Client(=호스트OS) ]

 

Windows에서 리눅스의 MySQL 서버로 접속해 보자.

 

 

3-1 명령 프롬프트에서 MySQL 클라이언트가 설치된 'C:\mysql\bin\' 폴더로 이동하고,

"mysql" 명령을 입력한다.

 

접속이 안 될 것이다.

 

접속이 안되는 이유를 파악해보자.

 

"mysql" 클라이언트 명령어는 아무런 옵션이 없이 실행하면 현재 클라이언트 프로그램이

설치되어 있는 컴퓨터에 MySQL 서버가 설치되어 있을 것이라고 생각하고 접속을 하게 된다.

 

지금은 Windows Client(호스트OS)에 MySQL 클라이언트만 설치했을 뿐,

MySQL 서버는 설치하지 않았으므로 접속할 MySQL 서버가 없는 것이다.

 

 

3-2 Fedora Server(192.168.xxx.111)에 접속을 하도록 지정하면 된다.

"mysql -h 호스트이름(또는 IP주소) -u 사용자이름 -p" 명령으로 접속해 보도록 하자.

 

비밀번호까지 입력하는 부분이 나와서 이번 실습 1-1에서 설정한

DB 사용자 'root'의 비밀번호 '1234'를 정확히 넣었는데 접속이 되지 않았다.

 

 

여기서 MySQL이 관리하는 사용자의 개념이 하나 더 나온다.

MySQL은 이메일 주소와 비슷한 형식으로 사용자 이름을 사용한다.

즉, '사용자이름@호스트이름(또는 IP)' 형식으로 사용자를 관리한다.

 

그래서 MySQL 서버에서 비밀번호를 '1234'로 지정한 DB 사용자 'root'의 정식 이름은

'root@localhost' 였던 것이다.

 

원칙적으로 MySQL 서버에 접속하는 MySQL의 클라이언트 명령어는

'mysql -h 서버호스트이름또는IP -u 사용자이름 -p'로 접속해야 한다.

그러면 내부적으로 '사용자이름'을 '사용자이름@현재컴퓨터IP'를 붙여서 서버로 접속하게 된다.

 

 

다시 Windows에서 접속한 명령을 살펴보자.

'mysql -h 192.168.xxx.111 -u root -p'로 접속을 했다.

일단 Fedora Server IP의 컴퓨터에 MySQL 서버가 설치되어 있으므로,

사용자만 통과되면 접속이 승인된다.

 

그런데 문제는 Windows에서 입력한 'root' 사용자의 정식 이름은

'root@Windows_IP주소'가 된다.

 

필자의 경우 'root@192.169.111.1' 이 되는 것이다.

MySQL 서버에 접속이 허용된 DB 사용자는 'root@localhost'(또는 root@127.0.0.1)만 있을 뿐,

'root@192.168.100.1'이라는 사용자는 존재하지 않으므로 접속이 거부된 것이다.

 

※ MySQL 서버에 접속하는 것이 좀 까다롭게 느껴질 수도 있지만, 이는 보안을 위해서 꼭 필요한 부분이다. 즉, DB 사용자 이름과 비밀번호만 안다고 아무 컴퓨터에서나 접속할 수 없도록 설정하는 것이다. MySQL 서버에 접속하기 위해서는 접속하는 컴퓨터까지 지정해 놓은 곳에서만 접속해야 한다.

 

 

3-3 먼저, ipconfig 명령으로 Windows Client의 IP주소를 확인해 놓자.

VMware 메뉴의 [Edit] -> [Virtual Network Editor]를 선택한 후 [Summery] 탭의

'VMnet8(Nat)' 부분의 192.168.xxx.0을 확인하면 된다.

여기서 Windows Client의 IP주소는 192.168.xxx.1번으로 내부적으로 고정되어 있다.

(나는 192.168.100.1이다)

 

또는, 명령 프롬프트에서 "ipconfig" 명령으로도 확인할 수 있다.

 

 

 

 

4. [ Fedora Server ]

 

사용자 개념을 파악했으므로 Windows Client에서 접속할 사용자를 생성해 주자.

 

MySQL 서버의 관리자인 root와 혼동이 되므로, Windows 사용자는 winuser로 생성하자.

(즉, 전체 이름은 winuser@192.168.xxx.1이 된다)

 

 

4-1 먼저 MySQL의 사용자가 들어 있는 테이블을 확인하도록 하자.

MySQL 서버를 설치하면 두 개의 DB가 자동으로 생성되는데

'mysql'과 'test'라는 이름의 DB들이다.

 

'mysql' DB는 MySQL 서버와 관련된 모든 시스템 정보가 들어 있다.

그 중에서 MySQL 서버에 접속할 사용자 정보도 들어 있다. 테이블 이름은 'user' 이다.

 

먼저, 터미널에서 "mysql -u root -p" 명령으로 접속한다.

접속 후에, mysql DB에 있는 user 테이블을 조회해 보도록 하자.

 

mysql> use mysql;                                                           

mysql> SELECT user, host FROM user WHERE user not like '';

 

 

mysql DB에 있는 user 테이블의 user 열과 host 열을 조회한 결과이다.

즉, 현재 MySQL 서버를 사용할 수 있는

Posted by 아이맥스