MySQL 소스 설치 - 리눅스(CentOS)
설치된 게 있으면 삭제 (안해도 됨)
# rpm -e --nodeps mysql-5.0.95-1.el5_7.1
혹은
# yum remove mysql-5.0.95-1.el5_7.1
의존성 패키지 설치
# yum install cmake gcc gcc-c++ cpp compat-gcc-32-g77 flex bison
# yum install libpng-devel libjpeg-devel freetype-devel gd-devel ncurses-devel
먼저, 기존에 mysql이 설치되어있는지 확인
# rpm -qa | grep mysql
mysql-5.0.95-1.el5_7.1
mysql 사용자를 등록하고 (–M 옵션은 사용자 홈디렉토리를 만들지 않겠다는 것임)
# groupadd mysql
# useradd –g mysql mysql –M
mysql의 데이터는 /data/mysql 폴더에 따로 저장하자.
# mkdir –p /data/mysql
# chown –R mysql:mysql /data/mysql
이제 mysql를 설치하자. (5.5.28).
# mkdir -p /data/mysql
# cd /usr/local/src
# wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.28.tar.gz/from/http://cdn.mysql.com/
# tar xzvf mysql-5.5.28.tar.gz
# cp -Rf mysql-5.5.28 /usr/local/mysql
# cd ../mysql
설정을 하자. (MySQL 5.5.9 이상 버전부터 cmake 를 이용하여 컴파일)
Configure 파일은 없고, CMakeLists.txt 라는 파일이 있다면 cmake로 Makefile을 만들어줘야 된다.
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DSYSCONFDIR=/etc -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306
이때, -- Configuring incomplete, errors occurred! 라는 결과와 함께 remove CMakeCache.txt and rerun cmake 문구가 나온다면 CMakeCache.txt 파일을 삭제하고 다시 cmake를 한다.
설정이 끝났다면 이제 make를 하자
# make && make install
이제 mysql 설정파일을 복사하고
# cp support-files/my-huge.cnf /etc/my.cnf
(참고)
my-huge.cnf : 메모리가 1~2G 사이일때
my-large : 512M 일때
my-medium.출 : 64~256M 일때
my-small.cnf : 65M 보다 작을때
실행데몬도 복사하고 설정을 잡고 실행권한 부여한다.
# cp support-files/mysql.server /etc/init.d/mysqld
# vi /etc/init.d/mysqld
datadir=/data/mysql
# chmod 755 /etc/init.d/mysqld
/usr/local/mysql 폴더에 mysql 사용자를 소유자로 지정
# chown -R mysql:mysql /usr/local/mysql
# ll /usr/local | grep mysql
drwxr-xr-x 37 mysql mysql 4096 11월 14 16:01 mysql
DB 생성
# chmod 755 ./scripts/mysql_install_db
# ./ scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
mysql 데몬 구동
# /etc/init.d/mysqld start
Starting MySQL.. [ OK ]
mysql root 패스워드 설정
# ./bin/mysqladmin -u root password 비밀번호
링크를 걸자
# ln -s /usr/local/mysql/bin/mysql /usr/bin/
# ln -s /usr/local/mysql/bin/mysqldump /usr/bin/
mysql에 접속
# mysql -u root -p
Enter password:
mysql> use mysql
Database changed
mysql root 계정으로 외부에서 원격접속 할 수 있도록 권한을 주기
mysql> select host, user, password from user;
+-----------------------+------+-------------------------------------------+
| host | user | password |
+-----------------------+------+-------------------------------------------+
| localhost | root | *533F1F34A2E470AAB9CD90B052A18352B8A5F466 |
| localhost.localdomain | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| localhost.localdomain | | |
+-----------------------+------+-------------------------------------------+
6 rows in set (0.00 sec)
mysql> grant all privileges on *.* to 'root'@'%' identified by '비밀번호';
Query OK, 0 rows affected (0.00 sec)
mysql> select host, user, password from user;
+-----------------------+------+-------------------------------------------+
| host | user | password |
+-----------------------+------+-------------------------------------------+
| localhost | root | *533F1F34A2E470AAB9CD90B052A18352B8A5F466 |
| localhost.localdomain | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| localhost.localdomain | | |
| % | root | *533F1F34A2E470AAB9CD90B052A18352B8A5F466 |
+-----------------------+------+-------------------------------------------+
7 rows in set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql 종료
# mysqladmin -uroot -p shutdown || kill mysqld