http://redkreuz.tistory.com/136


* 설치 환경
- Centos6

1. 다운로드 준비

- Mysql 다운경로 : http://dev.mysql.com/downloads/mysql/ (현재 최신버전 5.6.22)
- Source Code 에서 Generic Linux(Architecture Independent), Compressed TAR Archive 다운로드


* 굳이 로그인 할 필요 없이, >> No thanks, just take me to the downloads! 를 눌러 넘어가자.


* 리눅스 콘솔에서 다운 받기(주소를 알 경우) : wget 명령어를 이용한다.

2. 압축 풀기
- 다운받은 폴더에서 (필자는 보통 /usr/local/src 를 사용 )
# tar xvfz mysql-5.6.22.tar.gz                      - 압축풀기
# cd mysql-5.6.22                                   - 압축 푼 디렉토리로 이동
[mysql-5.6.22] # 

3. 설정 및 설치
1) group만들기
# groupadd mysql
# useradd -r -g mysql mysql

2) Configure 설정 (Mysql 5.5이상부터는 configure 대신 CMAKE를 사용해야 한다.)
- CMAKE 설치
# yum install cmake -y

- 기본 Library 설치 : ncurses, gcc-c++ 설치, bison 등

# yum install ncures-devel gcc-c++ bison zlib curl libtermcap-devel lib-client-devel bzip2-devel

* Configure 하기 전에 ncurses 를 설치하고 시작하자. (하단 Error 메시지 참고)


configure 설정

 

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.22 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci  -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=all -DWITH_SSL=/usr/local/openssl-1.0.1l -DWITH_ZLIB=system -DMYSQL_DATADIR=/usr/local/mysql-5.6.22/data -DENABLE_DOWNLOADS=1

* 만약 openssl 이 Source로 설치하였다면 위와 동일하게 설치하고, 이미 설치된 것(rpm)으로 사용한다면 -DWITH-SSL=system으로 설치하자

- CMAKE 옵션 설명

 

 

 

옵션

사용설명

-DCMAKE_INSTALL_PREFIX


설치될 Mysql 디렉토리. 편한대로 하면 됩니다.

-DWITH_INNOBASE_STORAGE_ENGINE

사용하고자 하는 스토리지 엔진을 지정하는 옵션입니다.
Mysql 에서 지원하는 엔진들을 적어주면 됩니다.

-DDEFAULT_CHARSET

기본 캐릭터셋을 지정합니다.

-DDEFAULT_COLLATION

캐릭터 셋의 collation을 지정하는 것입니다.

-DENABLED_LOCAL_INFILE

SQL파일을 로드하게 해주는 기능을 켭니다.

-DWITH_mysql-user

Mysql 유저를 지정해 줍니다.

-DWITH_EXTRA_CHARSETS

추가로 지원할 언어를 지정합니다. 기본값은 all 입니다.

-DWITH_SSL

(no, yes, bundled, system) SSL지원여부 입니다. system으로 할 경우에는 시스템에 설치된 SSL library를 이용하게 됩니다. 관련 library가 설치되어 있어야 합니다.

-DWITH_ZLIB

(bundled, system) system으로 할 경우에는 시스템에 설치된 library를 이용합니다.

-DWITH_READLINE

(boolean) readline 지원여부입니다.

* 옵션 설명 :  http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

 

* ncurses Error 메시지

-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH) 

CMake Error at cmake/readline.cmake:85 (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:128 (FIND_CURSES)

  cmake/readline.cmake:202 (MYSQL_USE_BUNDLED_EDITLINE)

  CMakeLists.txt:406 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!

See also "/usr/local/src/mysql-5.6.22/CMakeFiles/CMakeOutput.log".

See also "/usr/local/src/mysql-5.6.22/CMakeFiles/CMakeError.log".

* 다음과 같이 해결

 

# yum install ncurses-devel

* Bison Error 메시지

-- Performing Test HAVE_NO_BUILTIN_MEMCMP

-- Performing Test HAVE_NO_BUILTIN_MEMCMP - Success

-- GTEST_LIBRARIES:gmock;gtest

Warning: Bison executable not found in PATH

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

-- CMAKE_BUILD_TYPE: RelWithDebInfo

-- COMPILE_DEFINITIONS: HAVE_CONFIG_H

-- CMAKE_C_FLAGS:  -Wall -Wextra -Wformat-security -Wvla -Wwrite-strings -Wdeclaration-after-statement

-- CMAKE_CXX_FLAGS:  -Wall -Wextra -Wformat-security -Wvla -Woverloaded-virtual -Wno-unused-parameter

-- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF

-- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF

-- Configuring done

-- Generating done

-- Build files have been written to: /usr/local/src/mysql-5.6.22

* 다음과 같이 해결

 

# yum install bison

 


 

 


 

...
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mysql-5.6.22
#

 

* Configure 중에 found, success 뿐만 아니라 failed, not found 란 메시지도 뜨지만 Configure 는 문제 없이 완료했기 때문에 Mysql 운영하는데 큰 문제는 없는 듯 하다.. 
(해당 부분을 검색해봐도 나오지 않아서... 확인이 안됨)

3) Mysql 설치
# make && make install      - 컴파일 한 후 복사 및 설치

4) 권한 주기

 

 

# chown -R root /usr/local/mysql-5.6.22
# chown -R mysql /usr/local/mysql-5.6.22
# chgrp -R mysql /usr/local/mysql-5.6.22

5) 권한 설정 및 복사

 

# chown -R mysql /usr/local/mysql-5.6.22/data
# cp /usr/local/mysql-5.6.22/support-files/my-default.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y                    => 이미 파일이 존재하므로 덮어씌우자

6) DB 생성 (실행을 꼭 /mysql 상위 디렉토리에서 하자, /usr/local/mysql-5.6.22/)

 

# cd /usr/local/mysql-5.6.22
# ./scripts/mysql_install_db --user=mysql

 

* FATAL Error 메시지

FATAL ERROR: Could not find ./bin/my_print_defaults

If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.

If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.

=> mysql 상위디렉토레인 /usr/local/mysql-5.6.22 에서 실행하지 않으면 FATAL ERROR가 발생한다.

 


...
2015-01-29 18:12:48 3724 [Note] InnoDB: Shutdown completed; log sequence number 1625987
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

  ./bin/mysqladmin -u root password 'new-password'
  ./bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:

  ./bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

  cd . ; ./bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

  cd mysql-test ; perl mysql-test-run.pl

Please report any problems at http://bugs.mysql.com/

The latest information about MySQL is available on the web at


Support MySQL by buying support/licenses at http://shop.mysql.com

WARNING: Found existing config file ./my.cnf on the system.
Because this file might be in use, it was not replaced,
but was used in bootstrap (unless you used --defaults-file)
and when you later start the server.
The new default config file was created as ./my-new.cnf,
please compare it with your file and take the changes you need.

WARNING: Default config file /etc/my.cnf exists on the system
This file will be read by default by the MySQL server
If you do not want to use this, either remove it, or use the
--defaults-file argument to mysqld_safe when starting the server
#



7) DB 시작

 

# cp /usr/local/mysql-5.6.22/support-files/mysql.server /etc/init.d/mysqld
=> 해당 내역을 /etc/init.d/mysqld 로 카피해놓으면 다음부터는 service mysqld start 로 mysql을 실행시킬 수 있다.
# vi /etc/init.d/mysqld
basedir=/usr/local/mysql-5.6.22
datadir=/usr/local/mysql-5.6.22/data
=> 빨간색 부분 추가해 준다.


# /usr/local/mysql-5.6.22/bin/mysqld_safe --user=mysql &
# /usr/local/mysql-5.6.22/bin/mysql -p mysql

Enter password:              => 초기 root password 는 없으므로 그냥 ENTER 키로 접속한다.    
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.22 Source distribution

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 

8) Root Password 변경 및 권한주기

mysql> use mysql
mysql> update user set password=password("비번") where user = "root";
mysql> flush privileges;
mysql> GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY '비번' WITH GRANT OPTION;
mysql> flush privileges;

* ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
=> 권한을 주지 않았을때 발생하는 에러

# killall mysqld                 => mysqld 종료
#mysqld_safe --skip-grant &     => 권한 없이 접속 가능
# mysql -p mysql
mysql> GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY '비번' WITH GRANT OPTION;
mysql> flush privileges;
* 적용 후 다시 mysql 을 시작해 준다.
# service mysqld restart

9) Path 및 IPtables 설정

- Path 설정하기
# vi /etc/profile
* 맨 아랫줄에 다음과 같이 추가한다

* 추가할 항목(기존에 export 항목 전에 해당 내용을 추가하고, export 중복되는 항목은 아래 설명과 같이 추가하도록 하자)
...
MYSQL_HOME=/usr/local/mysql-5.6.22
PATH=$PATH:$MYSQL_HOME/bin
export MYSQL_HOME PATH

* Java, Tomcat, Ant를 모두 추가한 상황 (빨간색은 추가할 항목 mysql만 추가했을 때)
...
APACHE_HOME=/usr/local/httpd-2.4.10
MYSQL_HOME=/usr/local/mysql-5.6.22
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat
ANT_HOME=/usr/local/ant
PATH=$PATH:$MYSQL_HOME:$APACHE_HOME/bin:$JAVA_HOME/bin:$CATALINA_HOME/bin:$ANT_HOME/bin
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export MYSQL_HOME PATH APACHE_HOME USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

* 저장한 것 적용하기
# source /etc/profile

10) Linux 시작 시 자동으로 mysql 기동
# vi /etc/rc.local

- 맨 아랫줄에 빨간 부분을 추가하고 저장 한다. 해당 부분을 추가하면 다음부터는 자동으로 mysql 데몬이 올라와 있다.

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/local/httpd-2.4.10/bin/apachectl start
service mysqld start

* Error 발생

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

# killall mysqld 하고 다시 시작해보자

 

# /usr/local/mysql-5.5.9/bin/mysqld_safe --user=mysql &
# /usr/local/mysql-5.5.9/bin/mysql -p mysql 


+ Recent posts