2016/05/11

MySQL 5.7 Manual Install

MySQL 최신 버전인 5.7 버전을 테스트할 일이 있어서 수동으로 설치해 보았는데 이전과 다른 사항이 있어 기록차원에서 정리하였다.

우선 설치에 필요한 압축 파일을 mysql.com 사이트로 부터 다운로드 받는다.
내가 받은 파일은 mysql-5.7.12-winx64.zip 이다. 이 파일을 특정 폴더에 압축을 풀어 놓는다.
여기에서는 E:\Dev\mysql-5.7.12-winx64 압축을 풀어 놓고 기록 하였다.

설정 파일 작성
설정 파일을 작성해야 하는데 압축해제 폴더의 my-default.ini 파일은 my.ini로 복사하여 편집한다.
# These are commonly set, remove the # and set as required.
basedir = E:\Dev\mysql-5.7.12-winx64
datadir = E:\Dev\mysql-5.7.12-winx64\data
port = 3316
# server_id = .....
basedir과 datadir을 필수이고 port는 필요시 지정 한다. 다른 MySQL을 운영으로 인해 또는 다른 이유로 인해 기본 포트인 3306을 사용하지 못하는 경우 다른 포트 입력한다.

환경 변수 등록
압축 해제 폴더를 시스템 환경 변수에 MYSQL_HOME 으로 등록한다. 임시로 사용하는 것으로 시스템 환경설정이 부담스러운 경우 도스창에서 mysqld 를 실행하기전에 아래 명령으로 환경변수 등록 한다.
E:\Dev\mysql-5.7.12-winx64\bin> set MYSQL_HOME = E:\Dev\mysql-5.7.12-winx64

MySQL  초기화
E:\Dev\mysql-5.7.12-winx64\bin> mysqld --initialize
위 명령으로 지정한 data 폴더에 필요한 파일 생성 된다. 혹시 실패한 경우 data 폴더의 내용을 모두 삭제하고 위 명령을 다시 수행한다.

권한 설정을 위한 데몬 실행
--skip-grant-tables 옵션으로 권한 설정을 무시하도록 데몬을 실행한다.
E:\Dev\mysql-5.7.12-winx64\bin> mysqld --skip-grant-tables

MySQL 접속
mysql.exe 실행파일을 이용하여 MySQL에 접속한다.
E:\Dev\mysql-5.7.12-winx64\bin> mysql -u root --port=3316
접속시 포트번호 지정은 설정에서 기본 포트인 3306을 사용하지 않고 다른 포트를 사용할 경우 입력한다.

root 암호 설정
--skip-grant-tables 옵션으로 인해 ALTER USER나 SET PASSWORD 명령을 사용할 수없어 mysql 데이터베이스에 접속하여 User 테이블을 직접 수정한다.
mysql> \u mysql
Database changed
mysql> UPDATE USER SET authentication_string = password('mypassword') WHERE user = 'root';

mysql 재시작
서비스 등록하지 않은 경우 Task Manager에서 mysqld 종료 후 --skip-grant-tables 옵션 없이 다시 시작 한다.
E:\Dev\mysql-5.7.12-winx64\bin> mysqld

MySQL 접속
위에서 설명한 방법으로 MySQL에 접속한다.

root 암호 재설정
위에서 root의 암호를 바꾸서 접속에 성공했음에도 불구하고 데이터베이스 선택 명령을 실행하면 아래와 같이 명령을 수행하기 전에 암호를 설정하로는 에러 메시지가 출력 된다.
RROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

아래 방법을 이용하여 root 암호를 다시 설정 한다.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mypassword';
또는
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword');

아래 사항은 필수 사항은 아니고 알아두면 나쁘지 않을 서비스 등록에 대한 내용이다.
mysql 서비스 등록또는 삭제
서비스 등록: E:\Dev\mysql-5.7.12-winx64\bin> mysqld --install [서비스이름]
서비스 삭제: E:\Dev\mysql-5.7.12-winx64\bin> mysqld --remove [서비스이름]
서비스 이름이 지정되지 않으면 기본적으로 'MySQL'로 서비스 등록 시도

서비스 시작: net start mysql
서비스 중지: net stop mysql

2016/05/03

Poco Library 빌드하기

얼마전에 공개된 Poco Library v1.7.3 버전을 빌드해 보았다.
배포되는 Poco Library 중 poco-1.7.3-all.zip 을 다운 받았다. 이 버전은 OpenSSL과 MySQL Client 라이브러리를 필요로 한다.

Poco Library 빌드를 위한 파일은 아래와 같다.
Poco Library
http://pocoproject.org/releases/poco-1.7.3/poco-1.7.3-all.zip
OpenSSL
https://slproweb.com/products/Win32OpenSSL.html
https://slproweb.com/download/Win32OpenSSL-1_0_2g.exe
https://slproweb.com/download/Win64OpenSSL-1_0_2g.exe
MySQL
32-bit ZIP Archive(http://dev.mysql.com/downloads/file/?id=462038)
64-bit ZIP Archive(http://dev.mysql.com/downloads/file/?id=462039)

우선 poco-1.7.3-all.zip 파일을 특정 경로에 압축을 해제 한다. 압축 해제  후 존재하지 않는 폴더 Bin, Bin64, Lib, Lib64를 생성한다. 여기서는 D:\poco-1.7.3-all 에 압축을 해제한 것으로 간주하고 기록 하였다.
Win32OpenSSL-1_0_2g.exe 설치후 설치 경로의 bin 폴더의 libeay32.dll, ssleay32.dll파일을 Bin 폴더에 복사하고 lib 폴더의 libeay32.lib, ssleay32.lib파일을 Lib 폴더에 복사한다. 그리고 lib/VC/static 폴더의 모든파일을 Lib 폴더로 복사한다.
Win64OpenSSL-1_0_2g.exe 파일의 경우 Bin64와 Lib64 폴더로 복사를 한다. 마지막으로 include 폴더의 openssl 폴더를 D:\poco-1.7.3-all\Crypto\include 폴더에 복사한다.

MySQL에 포함되어 있는 include 폴더의 모든 파일들을 D:\poco-1.7.3-all\Data\MySQL\include 복사하고 32비트 파일에 포함되어 있는 libmysql.dll파일과 libmysqld.dll 파일을 Bin 폴더로 libmysql.lib파일과 libmysqld.lib 파일을 Lib 폴더로 복사한다. 64비트 파일에 포함되어 있는 파일들은 각각 Bin64와 Lib64로 복사한다.

마지막으로 buildwin.cmd 파일을 열어 편집 한다.
수정해야할 내용은 set OPENSSL_LIB 부분으로 32비트 버전을 빌드 할 때에는 D:\poco-1.7.3-all\Lib 로 설정하고 빌드하고 64비트로 빌드 할 때에는 D:\poco-1.7.3-all\Lib64로 설정하고 빌드 한다.

이렇게 설정하고 아래와 같이 sample과 test프로젝트를 제외하고 빌드한다.
32bit: D:\poco-1.7.3-all\buildwin 110 build all both Win32 nosamples notests devenv
64bit: D:\poco-1.7.3-all\buildwin 110 build all both x64 nosamples notests devenv

buildwin 실행 결과 32비트와 64비트 모두 에러 없이 빌드를 마쳤고 dll과 lib 파일이 생성 되었다.