■ mysql-5.0.67 설치
# useradd -M -s /bin/false mysql
mysql 계정의 홈디렉토리를 만들지 않고 쉘 접속을 허용하지 않도록 생성한다.
2. mysql 설치
다운로드한 mysql-5.0.45.tar.gz 파일을 /usr/local/src로 이동 후 압축을 풀고 설치한다.
# cd /usr/local/src
# tar zxvf mysql-5.0.67.tar.gz
# cd mysql-5.0.67
# CFLAGS="-03 -mpentiumpro" CXX=gcc CXXFLAGS="-03 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --enable-assembler --disable-shared --with-extra-charsets=complex --enable-thread-safe-client --with-mysqld-ldflags=-all-static --without-debug --without-docs --without-bench --with-charset=utf8 --with-collation=utf8_general_ci --with-readline
# make && make install
Configure Options more..
이 옵션은 mysql 5.0.4이후 대형 테이블 지원하기 위한 것으로 unsigned long 타입을 unsigned long long 타입으로 변환한다.
--with-extra-charsets=LIST
부가적으로 어떤 문자셋을 서버에서 컴파일 할지를 정의한다. LIST에는 스페이스로 구분된 문자셋 이름을 나열하거나, 동적으로 로드할 수 없는 모든 문자셋을 포함하기 위한 complex, 모든 문자셋을 바이너리안에 포함시키기 위한 all 이 들어간다.
--with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
정적으로 링크된 프로그램들을 컴파일 하고자 한다면..
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
mysql.sock 소켓파일 위치지정
--disable-shared
공유라이브러리에서 libmysqlclient.so.N을 생성하지 않는다. (컴파일러 또는 링커가 공유라이브러리 libmysqlclient.so.N을 생성하지 못하는 에러가 발생한다면 옵션을 추가한다)
※ make 도중 오류 발생
"/usr/bin/ld: cannot find -lncurses"
configure option에서 "--with-client-ldflags=-all-static"를 제거하니깐 된다..
3. DB 생성
# /usr/local/mysql/bin/mysql_install_db --user=mysql
# chown -R mysql.mysql /usr/local/mysql
4. mysql 설정파일 복사 (메모리 환경에 따라서 환경설정 파일들을 복사해줍니다.)
my-huge.cnf 1~1G
my-large.cnf 512M
my-medium.cnf 128M~256M
my-small.cnf 64M 이하
위와같이 나와있지만 위 설정은 DB서버 전용으로 했을 때 설정입니다. 기본적으로 my-medium.cnf를 복사한 다음 시스템 환경에 맞게 설정해서 사용하면 됩니다.
# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf mysql 설정파일 수정(선택사항임)
# vi /etc/my.cnf
웹서버와 DB가 같은 서버에서 동작한다면 굳이 mysql을 실행하면서 외부의 접속을 Listen할 3306포트는 필요하지 않을 것이다. 아래 옵션을 활성화하여 유닉스 자체소켓을 이용하도록 하면 DB에 대한 침해를 어느정도 사전방지할 수 있다.
skip-networking <-- 주석제거 (외부접속 차단)
5. mysqld 데몬 실행
# /usr/local/mysql/bin/mysqld_safe --user=mysql & 접속 확인
# /usr/local/mysql/bin/mysql
6. root 비밀번호 설정/확인
# /usr/local/mysql/bin/mysqladmin -u root password '비밀번호'
# /usr/local/mysql/bin/mysql -u root -p mysql
Enter password: 비밀번호
7. mysql 라이브러리 등록
# vi /etc/ld.so.conf
/usr/local/mysql/lib/mysql
# ldconfig
8. mysql 데몬 부팅시 실행등록
- 단독 데몬 실행시
# vi /etc/rc.d/rc.local
/usr/local/mysql/bin/mysqld_safe --user=mysql &
- init 프로세스에 데몬 등록
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# chkconfig mysqld on
9. 어느 위치에 있든 mysql 명령어를 사용할 수 있도록 링크
# ln -s /usr/local/mysql/bin/mysql /usr/bin
10. utf8 언어셋 설정 확인
mysql> show variables like 'c%';
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| completion_type | 0 |
| concurrent_insert | 1 |
| connect_timeout | 10 |
+--------------------------+----------------------------------------+
14 rows in set (0.00 sec) utf8 언어셋 수동설정
위와같이 utf8 언어셋으로 설정되지 않았거나 euckr이나 다른 언어셋에서 utf8로 설정할 때는 아래와 같이 my.cnf 환경설정 파일을 수정하시면 됩니다.
# vi /etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
[mysql]
default-character-set=utf8