compile mysql from source code

kernel: 2.6.23.1-42.fc8
kernel: 2.6.18-128.1.14.el5a02xen
 
gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33)
 
mysql version : mysql5.1.30
tarball:  mysql-5.1.30.tar.gz
 
steps:
 
$ wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.30.tar.gz
$ tar -xzvf mysql-5.1.30.tar.gz
 
$ cd mysql-5.1.30
 
./configure --prefix=$HOME/local/mysql/mysql-5.1.30 \
--with-unix-socket-path=$HOME/local/mysql/mysql-5.1.30/mysql.sock \
--with-charset=utf8 --with-extra-charsets=all --enable-local-infile \
--enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-user=$USER --with-debug \
--with-plugins='partition,daemon_example,ftexample,archive,blackhole,csv,example,federated,heap,innobase,myisam,myisammrg,ndbcluster'
 
// 這樣就能innodb myisam 等存儲引擎了,如果不指定 --with-plugins,那麼不會
// 獲得innodb 等存儲引擎
$ make
$ make install

 

$ mkdir $HOME/local/mysql/mysql-5.1.30/log

$ mkdir $HOME/local/mysql/mysql-5.1.30/etc

$ cp support-files/my-medium.cnf $HOME/local/mysql/mysql-5.1.30/etc/my.cnf

$ $HOME/local/mysql/mysql-5.1.30/bin/mysql_install_db --user=$USER \
      --basedir=$HOME/local/mysql/mysql-5.1.30 \
      --datadir=$HOME/local/mysql/mysql-5.1.30/var
 
 
# 文檔中建議新建立一個用戶和組 mysql:mysql
# 創建了 var 目錄,編譯源代碼建立的mysql,mysqld 在 libexec,這可能就是  -ledir 的由來吧

# cd $HOME/local/mysql/mysql-5.1.30
 

# start mysqld

$ $HOME/local/mysql/mysql-5.1.30/bin/mysqld_safe --user=$USER 1>/dev/null 2>&1 &  # 如果你啓動不起來把/dev/null換成一個文件看看報什麼錯了

$ $HOME/local/mysql/mysql-5.1.30/bin/mysqld_safe --user=$USER 1>mysqld.out 2>&1 &; tail -f mysqld.out

 
# connect to mysqld
$ $HOME/local/mysql/mysql-5.1.30/bin/mysql -uroot
mysql> select  version();
mysql> show engines;
mysql> show charsets;
mysql> show variables like 'have%';
 
# stop mysqld

$ $HOME/local/mysql/mysql-5.1.30/bin/mysqladmin shutdown -uroot


Add statup script

------------------------  boot_mysql51 ------------------------

#!/usr/bin/env bash

MYSQLD_HOME=$HOME/local/mysql/mysql-5.1.30
MY_CNF=$MYSQLD_HOME/etc/my.cnf
MYSQLD_SAFE=$MYSQLD_HOME/bin/mysqld_safe
STARTUP_LOG=$MYSQLD_HOME/log/mysqld.log

# ESCape code
ESC=`echo -en "\033"`
# Set colors
CC_RED="${ESC}[0;31m"
CC_GREEN="${ESC}[0;32m"
CC_YELLOW="${ESC}[0;33m"
CC_BLUE="${ESC}[0;34m"
CC_NORMAL=`echo -en "${ESC}[m\017"`

EXEC_CMD="$MYSQLD_SAFE --defaults-file=$MY_CNF 1>>$STARTUP_LOG 2>&1 &"
echo "${CC_GREEN}${EXEC_CMD}${CC_NORMAL}"
$MYSQLD_SAFE --defaults-file=$MY_CNF 1>>$STARTUP_LOG 2>&1 &
echo "${CC_BLUE}Show mysqld startup outputs${CC_NORMAL}"
tail -n 0 -f $STARTUP_LOG



Add shutdown script

------------------------   shutdown_mysql51 ------------------------

#!/usr/bin/env bash

MYSQLD_HOME=$HOME/local/mysql/mysql-5.1.30                                                                  
MY_CNF=$MYSQLD_HOME/etc/my.cnf
MYSQL_ADMIN=$MYSQLD_HOME/bin/mysqladmin
# root is a mysql super user
MYSQL_ADMIN_USER=root

# ESCape code
ESC=`echo -en "\033"`
# Set colors
CC_RED="${ESC}[0;31m"
CC_GREEN="${ESC}[0;32m"
CC_YELLOW="${ESC}[0;33m"
CC_BLUE="${ESC}[0;34m"
CC_NORMAL=`echo -en "${ESC}[m\017"`

EXEC_CMD="$MYSQL_ADMIN shutdown --user=$MYSQL_ADMIN_USER"
echo "${CC_GREEN}${EXEC_CMD}${CC_NORMAL}"
echo "${CC_RED}Shutdown mysqld${CC_NORMAL}"
exec $EXEC_CMD

發佈了43 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章