2.3.11. 윈도우 서비스로 MySQL 시작하기
윈도우 환경에서 MySQL을 실행하는 권장 방법은 MySQL을 윈도우 서비스의 형태로 설치하는 것이며, 이렇게 함으로서 윈도우가 시작되고 종료될 때 MySQL이 자동으로 구동/종료를 하게 된다. 서비스의 형태로 설치된 MySQL서버는 NET명령어를 사용해서 명령어 라인에서 제어하거나, 또는 그래픽 서비스 유틸리티를 사용할 수도 있다.
Services 유틸리티 (윈도우 서비스 컨트롤 메니저(Service Control Manager) )는 윈도우 제어 판넬에서 찾을 수 있다 (윈도우 200, XP, 및 서버 2003에는 관리자 툴 밑에 있음). 충돌을 피하기 위해, 명령어 라인에서 서버 설치 또는 제거를 실행하는 동안에는 서비스 유틸리티를 닫아 두기를 권장한다.
윈도우 서비스 형태로 MySQL을 설치하기 전에, 우선 서버가 실행되고 있다면 아래의 명령어로 우선 현재의 서버를 중지 시켜야 한다:
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root shutdown
Note: 만약에 MySQL root 사용자 계정이 패스워드가 있다면, -p옵션을 가지고 mysqladmin 를 호출한 다음 패스워드를 입력하면 된다.
이 명령어는 MySQL 관리자 유틸리티인 mysqladmin 를 호출해서 서버에 연결하고 셧 다운을 하게끔 한다. 이 명령은MySQL그랜트 테이블에 있는 디폴트 관리자 계정인MySQL root 사용자로 실행된다. MySQL그랜트 테이블에 있는 사용자는 전적으로 윈도우에 있는 로그인 사용자와는 독립적으로 운영된다는 것을 알아 두기 바란다.
다음의 명령어를 사용해서 MySQL서버를 서비스의 형태로 설치한다:
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --install
서비스-설치 명령어는 서버를 구동시키지는 않는다. 이에 대한 지침서는 이 섹션 후반부에서 설명하기로 한다.
MySQL 프로그램을 보다 쉽게 호출하기 위해서는, MySQL bin 디렉토리의 경로 이름을 윈도우 시스템 PATH 환경 변수에 추가하면 된다:
- 윈도우 데스크 탑에서, 내 컴퓨터 아이콘 위에서 오른쪽 마우스를 클릭한 다음, 속성(Properties)을 선택한다.
- 다음에 System Properties에서 고급 탭을 선택한 후, Environment Variables 버튼을 누른다.
- System Variables에서, 경로를 선택한 다음, Edit 버튼을 누른다. Edit System Variable 다이어로그가 나오게 된다.
- Variable Value 가 있는 텍스트 끝에 커서를 오게 한다. (End키를 사용해서 커서가 텍스트의 맨 마지막에 가게 하도록 한다.) 그 다음, MySQL bin 디렉토리의 전체 경로 이름을 입력한다(예를 들면,
C:\Program Files\MySQL\MySQL Server 5.1\bin). 여기에는 이 필드에 있는 값들과 경로를 구분하는 세미콜론(semicolon)이 있다는 것을 유의한다. 이 다이어로그를 닫고, 모든 열려 있는 다이어로그 창이 닫힐 때까지 OK 버튼을 누른다. 이제 여러분은 도스 프롬프트에서, 경로를 별도로 지정하지 않고서도, 시스템에 있는 실행 가능한 모든 MySQL 프로그램을 호출할 수 있게 된다. 여기에는 서버, mysql 클라이언트, 그리고 mysqladmin 및 mysqldump과 같은 모든 MySQL명령어-라인 유틸리티도 포함된다.
여러 개의 MySQL 서버를 동일한 시스템에서 구동하고 있다면, 여러분은 MySQL bin 디렉토리를 윈도우 PATH 에 추가할 수 없다.
Warning: 시스템 PATH를 수동으로 편집할 때에는 각별한 주의를 해야 한다; 현재의 PATH값 중에 일부분이라도 부주의로 삭제 또는 수정을 할 경우에는 전체 시스템이 오 작동을 하거나 또는 시스템을 사용할 수 없게 될 수도 있다.
MySQL 5.1을 서비스로 설치할 때 사용할 수 있는 부가적인 내용을 아래에 표시 한다:
- 여러분은 --install 옵션이 붙는 서비스 이름을 지정할 수 있다. 디폴트 서비스 이름은
MySQL이다. - 서비스 이름이 주어지면, 단일 옵션을 붙일 수 있다. 편의를 위해, 이것은 --defaults-file=file_name 가 되고 서버가 구동될 때 읽는 옵션에서 옵션 파일의 이름을 지정하게 한다.
--defaults-file가 아닌 다른 단일 옵션을 사용하는 것도 가능하지만, 이것은 추천하지 않는다. --defaults-file 이 더욱 편리한 방법인데, 왜냐하면 이것은 옵션들을 네임드 옵션 파일에 저장함으로서 서버에 대한 다중 시작 옵션을 지정할 수 있게 해 주기 때문이다. 또한, --defaults-file 이외의 옵션은 5.1.3 이전에는 지원하지 않는다.
- MySQL 5.1.1 버전 까지는, 서비스 이름 다음에 --local-service 옵션을 지정할 수 있다. 이것은 서버가 제한적인 시스템 권한을 갖고 있는
LocalService윈도우 계정을 사용해서 구동되도록 한다. 이 계정은 윈도우XP 또는 그 후의 버전에서만 사용 가능하다. --defaults-file 및 --local-service 는 모두 서비스 이름 다음에 사용되며, 어떤 순서로도 사용 가능하다.
윈도우 서비스 형태로 설치되는 MySQL서버의 경우, 서버가 사용하는 서비스의 이름 및 옵션 파일에 다음의 규정이 적용된다:
- 만약 서비스-설치 명령어가 --install 옵션 다음에 어떠한 서비스 이름이나 디폴트 서비스 이름 (MySQL)을 지정하지 않는다면, 서버는
MySQL서비스 이름과 표준 옵션 파일에 있는[mysqld]그룹에서 읽기 옵션을 가져와서 사용하게 된다. - 만약에
MySQL대신에 특정 서비스 이름을 --install 과 함께 사용하면, 서버는 지정한 서비스 이름을 사용한다. 서버는 동일한 이름을 갖고 있는 그룹에서 서비스 형태로 옵션을 읽어 오고, 표준 옵션 파일에서 옵션을 읽어온다.
서버는 또한 표준 옵션 파일에서 [mysqld]로 부터 옵션을 읽어온다. 이것은 모든 MySQL 서비스가 사용하는 옵션에 대해 [mysqld] 그룹과 그 서비스 이름을 갖고 설치된 서버가 사용하는 서비스 형태와 동일한 이름을 갖는 옵션 그룹을 사용할 수 있게 해 준다.
- 만약에 서비스-설치 명령어가 서비스 이름 다음에 --defaults-file 옵션을 지정한다면, 서버는 네임드 파일의
[mysqld]그룹에서만 옵션을 읽어오고 표준 옵션 파일을 무시한다.
보다 복잡한 예제를 보기 위해, 다음의 명령어를 예를 들어 보겠다:
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld"
--install MySQL --defaults-file=C:\my-opts.cnf
여기에서는, 디폴트 서비스 이름 (MySQL)이 --install 다음에 나온다. 만약에 아무런 --defaults-file 이 주어지지 않는다면, 이 명령어는 서버가 표준 옵션 파일에서 [mysqld] 그룹을 읽도록 한다. 하지만, --defaults-file 옵션이 존재하기 때문에, 서버는 [mysqld] 옵션 그룹과 네임드 파일에서만 옵션을 읽어 온다.
여러분은 또한 MySQL을 구동하기 전에 윈도우 Services 유틸리티에 시작(Start) 파라미터로 옵션을 지정할 수도 있다.
MySQL서버가 서비스 형태로 설치되면, 윈도우는 윈도우가 시작될 때마다 서비스를 자동으로 실행한다. 이 서비스는 또한 서비스 유틸리티, 또는 NET START MySQL 명령어를 가지고도 실행할 수 있다. NET 명령어는 대소 문자를 구분하지 않는다.
서비스로 구동될 때에는 mysqld이 콘솔 윈도우를 접속하지 못하기 때문에 아무런 메시지도 볼 수 없다. 만약에 mysqld 이 실행되지 않으면 문제를 분석하기 위해서 에러 로그를 검사하도록 한다. 에러 로그는 MySQL데이터 디렉토리에 있다 (예를 들면, C:\Program Files\MySQL\MySQL Server 5.1\data). 이 파일은 .err 접미사를 갖고 있다.
서비스 형태로 MySQL서버가 설치되고 이 서비스가 구동되면, 윈도우가 셧다운 될 때 자동으로 이 서비스도 종료된다. 서버는 Services 유틸리티, NET STOP MySQL 명령어, mysqladmin shutdown 명령어를 사용해서 수동으로 종료시킬 수 있다.
시스템이 부팅될 때 자동으로 서비스가 실행되는 것을 원하지 않을 경우에는, 수동 서비스 형태로 서버를 설치하면 된다. 이렇게 하기 위해서는, --install 옵션이 아닌 --install-manual 옵션을 사용한다:
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --install-manual
서비스 형태로 설치된 서버를 제거하기 위해서는, 우선 NET STOP MYSQL를 사용해서 서버를 종료시킨 다음에, --remove 옵션을 사용해서 서버를 삭제 한다:
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --remove
mysqld 이 서비스 형태로 구동되지 않는다면, 여러분은 명령어 라인에서 이것을 실행 시킬 수 있다.