본문 바로가기

천년열혼/리눅스이야기

MYSQL 5.1.x 설치 및 my.cnf 설정방법 그리고 오류대처법



우선 Mysql 5.1.x 버전대를 다운로드 한다.

최근 5.6버전과 5.7버전이 있으나 이는 좀 복잡하고 굳이 이런 상위버전까지 필요치 않은

옛사람(?)들에게는 5.1 버전대만 있어도 충분하다.

따라서 이 버전으로 설치하여 필자는 사용중이다^^;;

 

다운로드 주소는 아래와 같고 상위버전이나 최신버전을 다운받으려면 그냥 http://dev.mysql.com 에가서 받으면 되는데 최근 이 사이트가 다운로드를 하기 위해 오라클에 가입하라고 하던데 귀찮아서 패스함..

 

[다운로드 주소]

1. http://dev.mysql.com/downloads/mirrors/ 로 이동후 빠를것 같은 미러사이트로 접속하여 받으시면 됩니다.

2. 1번이 귀찮으신분은 아래 주소를 클릭하여 바로 받습니다..

주소: ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz (5.1버전대의 최신버전임 현재 글쓴 시점에서..)

 

[압축해제 및 make 준비]


* 참고 : 루트(root)권한으로 접속하여 작업할것을 권장합니다. 이 권한으로 설치 및 설정이 가능함.


# tar -xvzf mysql-5.1.73.tar.gz
# ./configure --prefix=/usr/local/mysql \ --> 주요파일 설치 위치(bin, libexec, lib, ...Default는 /usr/local/mysql)
> --localstatedir=/usr/local/mysql/data \ --> 데이터, 로그 저장 위치
> --sysconfdir=/usr/local/mysql/conf \ --> 기본 설정파일 my.cnf 등 저장 위치
> --with-mysqld-user=mysql \ --> Daemon 실행 계정
> --with-charset=utf8 --with-extra-charsets=all \ --> 기본 charset 지정
> --with-tcp-port=8321 \ --> 접속용 TCP port(기본 3306), 기본포트사용시 생략해도 됨
> --with-plugins=innobase \ --> innodb용 plugin
> --enable-shared \
> --enable-assembler \

<한줄 요약>

 

귀찮은 분들은 복사해서 써도 됨.=_=;;

 

./configure --prefix=/usr/local/mysql  --localstatedir=/usr/local/mysql/data --sysconfdir=/usr/local/mysql/conf --with-mysqld-user=mysql --with-charset=utf8 --with-extra-charsets=all --with-tcp-port=8321  --with-plugins=innobase --enable-shared --enable-assembler

[ 빌드 및 설치 ]

# make && make install

[ Daemon 실행 계정 추가 ]


# useradd -M mysql

[ DB 저장소 초기화 생성 ]

 

* 이 절차를 해줘야만 SQL 기본 데이터와 저장소가 세팅되어 사용이 가능해집니다.

 

# cd /usr/local/mysql/bin
# ./mysql_install_db --user=mysql ==> /usr/local/mysql/data 에 mysql, test 디렉토리 생성됨

[ MySQL 계정권한 설정 ]

# cd /usr/local/mysql
# chown -R mysql.mysql ./data/

[ MySQL 설정파일 준비 ]


# cd /usr/local/mysql/share/mysql

# cp my-huge.cnf /usr/local/mysql/conf/my.cnf

* 다수의 설정파일 형태가 존재하니 필요에 맞게 선택(small, medium, ..., huge)
# pico /usr/local/mysql/conf/my.cnf

  * SQL환경설정 파일을 입맛에 맞게 설정합니다.

    기본적인 언어세팅등은 아래에서 다룹니다.

    기본 편집기는 vi를 사용하지만 저는 제 편의상 nano 편집기가 좋더군요

    이 편집기를 링크걸어 pico로 사용중입니다. 어자피 nano나 pico나 같습니다.

[ 프로필에 경로설정 ]

*프로필에 경로를 설정하여 어느곳에서든 해당 관련 명령어들을 사용하게 함.


# pico ~/.bash_profile
PATH=$PATH:/usr/local/mysql/bin
# pico /etc/skel/.bash_profile
PATH=$PATH:/usr/local/mysql/bin
# source ~/.bash_profile

[ 데몬링크 작업 ]

* MySQL서버를 활성/비활성 해주는 데몬파일을 ETC 의 INIT.D 디렉토리 아래에 두어

데몬실행을 쉽게 하도록 합니다. (보통 다른 데몬들도 이곳에 모여있습니다.)


# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --list | grep mysqld ==> Run level별 start/stop 설정 확인(0:off  1:off  2:on   3:on   4:on   5:on   6:off)

# /etc/init.d/mysqld start ==> MySQL Daemon 실행
# mysqladmin -u root password **** ==> root password 지정
  * 저는 mysql -u root 혹은 mysql 로만 접속하여 그 안에서 루트 비번을 설정했습니다.

(설치 직후에는 비번이 없기때문에 들어가집니다. 그냥.. 설정후에는 비번을 넣고 접속해야합니다.)

 

mysql> set password for root@localhost = password('비밀번호설정');

명령을 내려주면 루트 비밀번호가 설정이 되며 추후 루트로 접속후에도 이와 같은 방법으로 비밀번호 변경이 가능합니다.


위 내용을 서술하는데  http://bryans.tistory.com/26 [Barracuda MemoLog] 님의 블로그 글을 참고하여

기술하였습니다.

 

[ My.CNF 설정 ]

 

my.cnf 는 MySQL이 작동되는데 필수적인 파일로 각종 환경을 이곳에서 설정할 수 있습니다.

그런데 그 수많은 환경설정을 일일이 다룰 수는 없고 기본적인 부분만 다룹니다.

 

위 설치방법대로 설치후 설정파일을 오픈해보면 보통 아래와 같은 내용이 보이며

innodb를 이용하면 내용이 조금 더 많아질 수 있습니다만, 그중 아래와 같은 내용에서

설정만 하겠습니다.

 

< 설정내용에 대한 설명 >

* 기본적으로 "#" 은 주석을 의미합니다. 데몬이나 클라이언트를 실행하는데 있어

아무런 영향을 주지 않는.. 그러니까 그냥 해당 부분에 대한 설명을 달아둔다라고만 보시면 되겠습니다.

 

[client]
#password       = your_password

#기본적으로 주석처리 되어있습니다. 그냥 넘어가도 무방한 설정부분입니다.

#클라이언트로 서버에 접근시 이곳에 설정한 암호를 이용하여야 접근이 가능하도록 설정하는 부분같습니다.


port            = 3306

#기본적으로 사용할 TCP포트번호입니다.

#3306이 기본이며 설치당시 해당 포트번호를 변경했다면 이곳에서도 변경해줘야됩니다.


socket          = /tmp/mysql.sock

#소켓이 만들어질 위치와 소켓파일명을 설정하는것인데

#건들지 않아도 됩니다.


default-character-set=utf8

#클라이언트가 접근시 기본적으로 맞춰줄 언어셋입니다.

#요즘은 대부분 UTF8을 이용하므로 utf8로 맞춰두었습니다.

#EUCKR을 이용하는 분들은 이부분에 euckr로 수정하면 됩니다.


# The MySQL server

#아래는 데몬설정부분입니다.

#서버설정에 영향을 미치는 부분입니다.
[mysqld]
port            = 3306

#위 클라이언트에서 설명한것과 동일합니다.

#같이 맞춰주길 권합니다.


socket          = /tmp/mysql.sock
#이부분도 상동

 

#skip-locking
# 이 skip-locking 이 5.1 이하에서는 맞는 설정이었으나 현재 버전부터는 아래와 같이

#skip-external-locking 로 변경되었습니다.

skip-external-locking


#아래 내용은 각종 버퍼사이즈와 캐시사이즈를 설정하는 부분인데

#전문가가 아니라면 그냥 기본값으로 사용하는게 좋고 조금더 큰 사이즈를 원한다면 위 설치부분중 my-huge 대신 lage를 이용하면 됩니다.


key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M

# Try number of CPU's*2 for thread_concurrency
#아래는 CPU스레딩수를 설정하는부분인데 기본설정으로 두는게 좋습니다.

#자신의 프로세서 수를 안다면 그 수만큼 설정해도 되지만 기본으로 두는게 좋습니다.

thread_concurrency = 8

#SQL서버내의 언어셋을 설정하는 부분인데 마찬가지로 UTF8로 설정한 모습니다.

#default-character-set=utf8
character-set-client-handshake=FALSE

#접속시 기본언어셋을 UTF8로 맞춰주는 설정입니다.
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server=utf8
collation-server=utf8_general_ci

#서버실행시 SQL실행권한을 mysql로 설정해주는 부분입니다.

#보안상 굳이 root로 해줄 필요없습니다.
user=mysql

 

#skip-networking 옵션은 들어오는 모든 클라이언트를 하나의 호스트에서 처리하도록 하여 보안을 높힐수 있도록 TCP에서 오는 수신을 대기하지 않도록 하는옵션이지만 권장되지는 않습니다. 그냥 기본적으로

#주석처리 된상태로 사용하길 권합니다.

#skip-networking

 

log-bin=mysql-bin

server-id       = 1

#server-id       = 2
#master-host     =   <hostname>
#master-user     =   <username>
#
#master-password =   <password>
#
#master-port     =  <port>
#
#log-bin=mysql-bin
#
#binlog_format=mixed

#innodb_data_home_dir = /usr/local/mysql/data
#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 384M
#innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 8M

#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

 

#SQL백업명령을 이용시 영향이 미칠 설정입니다.

#기본적으로 언어셋만 UTF8로 맞춰놨으며 기본을 사용합니다.

[mysqldump]
quick
max_allowed_packet = 16M
default-character-set=utf8

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set=utf8

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


 

* 설명된 내용외에는 직접 찾아보며 설정하길 바라며 설명된 내용만 가지고도 충분히 서버운용에 문제가 되지 않습니다.

 

[ MYSQL 라이브러리 에러 대처 ]

 

사용하다보면

error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory
이와 같은 에러메시지를 만날때가 있다.

아 물론 SQL서버를 사용중이 아니고 SQL라이브러리를 필요로 하는 타 응용프로그램등에서

이와 같은 오류를 뱉어내며 실행이 안되는경우가 종종 있을 수 있다.

이는 소스로 MySQL을 설치후에 나타는 현상중 하난데 SQL서버 문제가 아니라 라이브러리 참조가 되고 있지 않아 생기는 문제입니다.

 

ldd 명령어를 이용하여 해당 실행파일을 명령해보면 아래처럼 NotFound 를 띄우는걸 볼 수 있다.

 

# ldd /home/*/data/app

       linux-gate.so.1 =>  (0x00e90000)
        librt.so.1 => /lib/librt.so.1 (0x00387000)
        libm.so.6 => /lib/libm.so.6 (0x0035c000)
        libz.so.1 => /lib/libz.so.1 (0x00347000)
        libdl.so.2 => /lib/libdl.so.2 (0x00324000)
        libmysqlclient.so.16 => Not Found

        libcrypt.so.1 => /lib/libcrypt.so.1 (0x001d3000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00205000)
        libc.so.6 => /lib/libc.so.6 (0x004f5000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x0032b000)
        /lib/ld-linux.so.2 (0x001a7000)

 

이를 해결하는 방법은 아래와 같다.

 

 


# pico /etc/ld.so.conf
/usr/local/mysql/lib/mysql/ <- 해당 라이브러리 파일이 있는 디렉토리 경로 추가
# ldconfig

그런데 ldconfig를 실행하면 ld.so.conf 에 설정해준 경로에서 안찾고 /usr/lib 에서 찾는경우가

있는데 이때는 해당 경로에서 작업해주면 해결이 됩니다.

 


'천년열혼 > 리눅스이야기' 카테고리의 다른 글

MYSQL 백업하기  (0) 2013.07.31
vsftpd 설정하기  (0) 2013.06.11