이 MySQL 이란 DB 는 제가 IT 생활을 하면서 도대체 몇번을 설치하고있는지 모를 정도로 자주 설치해서 사용하네요. 그만큼 돈없는 회사나 개인, 프로젝트에서는 축복받은 존재이기도 하죠.

 오늘은 이 MySQL 의 설치 과정을 블로그로 남겨볼까 합니다. 그냥 apt 나 yum, rpm 으로 설치하면 재미 없죠. 소스로 컴파일 해서 궂이 root 계정이 아니더라도 운영할 수 있도록 해보겠습니다. 


[준비물]

Ubuntu 13.04 
mysql 5.6 source distribution package


1. 재료 준비

MySQL 소스

 MySQL 다운로드 페이지에서 카테고리를 Source 로 선택하면  "Generic Linux (Architecture Independent), Compressed TAR Archive " 가 보입니다. 다운로드 받으면 됩니다.


 MySQL 도 C 로 개발되었기때문에 glibc (GNU C Library) 에 Dependency 가 있습니다. 현재 Ubuntu 13.04 에 기본적으로 포함된 glibc는 버전이 2.17 입니다. (GLIBC 버전 확인은 getconf -a 로 확인할 수 있습니다. MySQL 5.6.19 버전은 glibc 2.5 이상 버전에 Dependency 가 있는걸로 보입니다.)


cmake 빌드할 때, -DENABLE_DOWNLOADS=1 해서, google_mock 같은 써드파티 라이브러리 소스 함께 다운받아 빌드하도록 옵션 준다.

mysql 의 cmake 빌드 옵션은 아래 URL 참고

http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html


오류났을때는 조치하고, CMakeCache.txt 파일을 지우고 나서 다시 cmake 해야 한다.


[내옵션]

cmake -DCMAKE_INSTALL_PREFIX=/home2/dev/db/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLE_DOWNLOADS=1 -DMYSQL_DATADIR=/home2/dev/db/mysql_data -DWITH_INNOBASE_STORAGE_ENGINE=1 .


make


make install


2013-08-28 15:07:25 26770 [Note] InnoDB: Waiting for purge to start 2013-08-28 15:07:25 26770 [Note] InnoDB: 5.6.13 started; log sequence number 0 2013-08-28 15:07:25 26770 [ERROR] Aborting 2013-08-28 15:07:25 26770 [Note] Binlog end 2013-08-28 15:07:25 26770 [Note] InnoDB: FTS optimize thread exiting. 2013-08-28 15:07:25 26770 [Note] InnoDB: Starting shutdown... 2013-08-28 15:07:27 26770 [Note] InnoDB: Shutdown completed; log sequence number 1600607 2013-08-28 15:07:27 26770 [Note]


mysqld_safe --verbose --help 하면, 마지막에 현재 세팅된 variable 나옴.

그런데 요게 역시나 유저 권한으로 띄우기에는 적합하지 않은 옵션들이 기본값임.

바꿔야할것들이 있음..


[기본]

basedir = /usr 

datadir=/var/lib/mysql/

general-log-file = /var/lib/mysql/chrubuntu.log

language                                                   /usr/share/mysql/

lc-messages-dir                                            /usr/share/mysql/

log-error                                                  /var/log/mysql/error.log

pid-file                                                   /var/run/mysqld/mysqld.pid
plugin-dir                                                 /usr/lib/plugin/
socket                                                     /var/run/mysqld/mysqld.sock

그다음..


지금 생성한 my.cnf 를 기본으로 띄워야 하는데.. 방법은 두가지 ..

1. my.cnf 파일을 ~/.my.cnf 파일로 복사해줌~! 

 /etc/my.cnf 파일이 있거나, /etc/mysql/my.cnf, 같은게 있으면 없애줌~!

 왜냐하면, /etc/my.cnf 있으면, 이걸 먼저 로딩하기 때문임.


2. 모든 mysql 관련 실행파일에 --defaults-file=/경로/my.cnf 를 써줌.


난 1번을 선택했음~!


$ scripts/mysql_install_db

실행해줌.


$ bin/mysqlad_safe & 

해서 띄워보고 에러 나는지 확인


$ bin/mysqladmin -uroot password '내패스워드'

로 root 패스워드 변경함


root 에게 ANY 에서 접속할 권한 주려고..

3가지 방법 존재함.

1. GRANT 쿼리 사용


2. mysql_setpermission 유틸 사용

우선 실행하니 이런 에러 남..


perl 에 DBI 모듈 없어서 그램..


다시 perl 모듈 부터 설치해야하니..

# perl -eshell -MCPAN 

cpan> install local:lib DBI (or how it is called)

요렇게 해주기.. 

다시 cpan 쉘로 들어가려면, 그냥

$ cpan 하면 됨.


그런데, 이게 끝이 아니다.. 그래도 경로를 못찾는다..

CPAN 이랑 perl 이랑.. 뭐이리 복잡함??

http://blog.naver.com/PostView.nhn?blogId=xtjin&logNo=50004217785 

요거 참고해서 차근히 함 해보자.

==> 하고 보니, install DBI 를 CAPN 의 shell 에서 하고 나서,

~/.cpan 디렉토리로 가서 .. => install 로 하지 말고, 그냥 get DBI 하자..

get DBI 해서  ==> 아니야~~!!


[정답은..]

cpan shell 에서..

o conf makepl_arg INSTALL_BASE=~/perl

o mbuildpl_arg --install_base=~/perl

이렇게 해주고 나서, 

.profile 에서,.

export PERL5LIB=$PERL5LIB:~/perl/lib:~/perl/lib/x86_어쩌구.. 

해줘야 함.


그리고, 

cpan> install local:lib 함 해주고

cpan> instal DBI 함 해주고

cpan > install DBD:mysql 하면 에러나는데..

우선 밖으로 나가서,

~/.cpan/build/DBD-mysql-xxx 에서

$ perl Makefile.PL INSTALL_BASE=~/perl --mysql_config=/home2/dev/db/mysql/bin/mysql_config

로 수동으로 빌드 해줘야 함.

뒤에 --mysql_config 옵션에 mysql 설치된 디렉토리에서 bin 디렉토리 보면 mysql_config 라는 파일 있는데 그거 지정해줘야 함.


위처럼 Looks good 이 나와야~~!

그다음

make

make install


드디어 mysql_setpermission 을 쓸 수 있음!~

여기서, root 에 % host 를 추가해줄거이므로, 3번 선택.


3. 직접 user 테이블에 INSERT 하기





[오류]

1. ncurses 라이브러리 못찾는 경우

-- Could NOT find Curses  (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:83 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
  cmake/readline.cmake:127 (FIND_CURSES)
  cmake/readline.cmake:217 (MYSQL_USE_BUNDLED_LIBEDIT)
  CMakeLists.txt:257 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

요따구로 나오는거..

$ sudo apt-get install ncurses5-dev 

$ sudo apt-get install ncursesw5-dev

로 설치 해야한다~ ! 꼭~ ncurses5-dev 를 설치~ 

ncursesw5 는 다국어 뭐시기란다..


2. CMAKE_CXX_COMPILER 에러 나는 경우


CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

CMake Error: Internal CMake error, TryCompile configure of cmake failed

-- Performing Test HAVE_NO_UNUSED_TYPEDEFS - Failed

-- GTEST_LIBRARIES:gmock;gtest

Warning: Bison executable not found in PATH

-- Library mysqlserver depends on OSLIBS -lpthread;m;crypt;dl

-- Configuring incomplete, errors occurred!


요따구 에러..

g++ 패키지 없어서 그렇것같음.


3. Bison 어쩌구 경고..
-- GTEST_LIBRARIES:gmock;gtest
Warning: Bison executable not found in PATH

$ sudo apt-get install bison
해주기

4. libpthread 의존성 어쭈구..

$ sudo apt-get install libpthread*


 다음에는 MySQL 의 아키텍쳐와 중요한 개념적인 이해에 대하여 써보도록 하겠습니다.


반응형

'Software Development > DB' 카테고리의 다른 글

MySQL Connection Pool 타입으로 JNDI 등록  (1213) 2009.11.16
MySQL root 패스워드 분실 시 조치 방법  (1201) 2009.10.15
MySQL root 비번 변경하기  (487) 2009.10.15
블로그 이미지

Good Joon

IT Professionalist Since 1999

,