본문 바로가기

DATABASE

[MySQL] Linux에서 5.0 설치하기 - 컴파일

출처 : http://levin01.tistory.com/1122

서버 셋팅을 하다 보면 참 편리한게 APM 패키지이다. 페도라같은 경우는 rpm으로도 설치가 가능하며, 바이너리를 받아 설치하여도 아주 편리하게 이용할 수 있다. 하지만 나만의 Mysql을 위해서는 컴파일을 해서 설치하는 것도 좋은 방법인듯 하다. 설정은 페도라4에서 시행했다. 프로파일 및 자동시작 외에는 솔라리스에서도 바로 적용이 가능할 것이다.


일단은.. 아래 사이트에서 MySQL 5.0을 다운받는당...


http://www.mysql.com


소스코드를 다운 받자.. 그러면 일단 압축을 풀고... 다음과 같이 컨피규어를 날려준다.


./configure --prefix=/usr/local/mysql --with-charset=euckr --enable-large-files --localstatedir=/u01/data/mysql --with-readline --with-extra-charsets=all --with-innodb --disable-shared --with-mysqld-user=mysql --with-unix-socket-path=/var/lib/mysql/mysql.sock --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --without-debug --without-docs


--prefix=/usr/local/mysql

기본적으로 mysql 설치할 폴더를 정해준다. 실행파일이나, 설정파일을 따로 나눠 사용할 경우는 컨피규어 옵션에서 따로 다 설정해줘야 한다. 그런 경우는 모 ... 찾아보자 .. 각 폴더에 모두 나누어 놓는 것도 사실 귀찮다.


--with-charset=euckr

여기서 기본적으로 코드는 euc-kr을 쓴다. utf-8을 쓸 경우는.. 모 charset만 고쳐주면 될 것이다.


--localstatedir=/u01/data/mysql

mysql 데이터 파일 저장은 /u01/data/mysql 폴더 이다. 이건 없으면 mysql폴더 아래로 들어간다.


--with-innodb

innoDB를 사용하려면 이 옵션을 꼭 넣어 줘야 한다.


--with-mysqld-user=mysql

mysql실행 유저를 결정한다.


--with-unix-socket-path=/var/lib/mysql/mysql.sock

요건 소켓파일의 위치를 알려준다. data쪽에 넣어 두지 말고 var폴더에 잘 넣어 주도록 하자. tcp/ip대신 유닉스 소켓을 사용하여 최적의 성능을 끌어 낸다.


--with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

컴파일 옵션으로 'CXX=gcc'를 사용할 때 오류를 피하기 위해 공유 라이브러리를 사용하지 않음

실행 성능을 높일 수 있다.


--without-debug

질의시 디버깅 코드를 사용하지 않기 때문에 빠른 속도를 얻어낼 수 있다.


configure을 실행한 후.. 모.. 컴파일을 해야 겠지.. 컴파일을 하자.


그다음에는.. make

make install을 해주자..(요놈은 root권한으로 해야 한다)


그럼 mysql은 설치가 다 되었다.


그 다음 할일은 무엇인가? 바로 mysql 사용자를 만드는 것이다.

이유는 mysql동작을 root가 아닌 mysql유저가 하도록 하는 것이다. 보안상의 문제~


groupadd dba


useradd -M -o -r -d /usr/local/mysql -s /sbin/nologin -c "Mysql Server" -u 27 -g dba mysql >/dev/null 2>&1 || :


그룹명은 mysql로 하는 것이 일반적이다. 근데 난 걍 dba로 할란다.


그 다음은 설치된 폴더에 대해 권한을 부여하자.

chown -R root:dba /usr/local/mysql
chown -R mysql:dba -R /var/lib/mysql/


그 다음에 mysql data가 저장될 폴더를 생성한다.

mkdir /u01/data/mysql


다음은 초기 데이터를 생성해야 한다.

/usr/local/mysql/bin/mysql_install_db


그 이후 퍼미션도 조정해 준다.

chown -R mysql:dba /u01/data/mysql



mysql을 실행한다.

/usr/local/mysql/bin/mysqld_safe &


다음은 root권한을 설정해 준다.

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

그 다음은.. 라이브러리에 등록한다. 물론 루트 권한으로..

echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf && ldconfig


mysqld 자동 시작을 위해 다음과 같이 스크립트를 복사해 준다.

cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld


다음은 자동 시작 등록을 해주자.

chkconfig --add mysqld

chkconfig --level 35 mysqld on (런레벨 35일때 자동 실행 된다)


마지막으로 익명접근권한을 삭제하자.. mysql 콘솔에 그냥 접근을 못하게 해야 한다.


root 권한으로 접근하여.. mysql 데이터베이스를 선택한 후 다음 쿼리문을 실행한다.

delete from user where password = "";


그 후에 mysql을 재시작 한다 일단은 콘솔을 종료하고... 쉘에서..

mysqladmin -u root -p reload


다음은 설치파일의 support-files폴더에 있는 my.cnf파일을 복사한다.

cp my-large.cnf /etc/my.cnf // 메모리에 따라서 파일이 달라진다.