该脚本实现自动安装mysql,若检测到脚本目录包含mysql-5.5.20.tar.gz安装文件,则执行解压安装,若没有安装文件,则从网上下载再安装。

#MySQL define path variable 定义参数

M_FILES=mysql-5.5.20.tar.gz

M_FILES_DIR=mysql-5.5.20

M_URL=http://down1.chinaunix.net/distfiles/

M_PREFIX=/usr/local/mysql/


#Install Mysql DB server 开始安装

echo -e "\033[32mcheck if $M_FILES is exist.\033[1m"

sleep 3



if [[ ! -f $M_FILES  ]] ; then

        echo -e "\033[32m $M_FILES is not exist. will download it \033[1m"

wget -c $M_URL/$M_FILES

sleep 5


elif [[  -f $M_FILES  ]] ; then

                echo -e "\033[32m $M_FILES is  exist.  will install it \033[1m"

                sleep 5

fi

tar -xzvf $M_FILES && cd $M_FILES_DIR &&yum install cmake -y ;

cmake . -DCMAKE_INSTALL_PREFIX=$M_PREFIX \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DMYSQL_DATADIR=/data/mysql \

-DSYSCONFDIR=/etc \

-DMYSQL_USER=mysql \

-DMYSQL_TCP_PORT=3306 \

-DWITH_XTRADB_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_EXTRA_CHARSETS=1 \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=all \

-DWITH_BIG_TABLES=1 \

-DWITH_DEBUG=0



#判断编译结果

if [ $? -eq 0 ];then 

    make && make install

/bin/cp support-files/my-small.cnf /etc/my.cnf

/bin/cp support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

#mysql 初始化

cd $M_PREFIX

useradd mysql

chown -R mysql.mysql $M_PREFIX 

$M_PREFIX/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=$M_PREFIX

ln -s $M_PREFIX/bin/mysql /usr/bin

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

chown -R mysql.mysql /data/mysql

/etc/init.d/mysqld restart 

$M_PREFIX/bin/mysqld_safe --user=mysql &


    echo -e "\n\033[32m-----------------------------------------------\033[0m"

                echo -e "\033[32mThe $M_FILES_DIR Server Install Success !\033[0m"

        else

                echo -e "\033[32mThe $M_FILES_DIR Make or Make install ERROR,Please Check......\033[0m"

                exit 0

    fi





以下为编译安装mysql5.5版本遇到的一些问题

1 .CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.


办法:yum install -y gcc gcc-c++


2 .另外,再安装可能提示如下错误:

[ 84%] Building CXX object sql/CMakeFiles/sql.dir/mysqld.cc.o

/tmp/lamp/mysql-5.5.20/sql/mysqld.cc: In function ‘void handle_connections_sockets()’:

/tmp/lamp/mysql-5.5.20/sql/mysqld.cc:5131: 错误:从类型‘size_socket*’到类型‘socklen_t*’的转换无效

/tmp/lamp/mysql-5.5.20/sql/mysqld.cc:5131: 错误:  初始化‘int accept(int, sockaddr*, socklen_t*)’的实参 3

/tmp/lamp/mysql-5.5.20/sql/mysqld.cc:5198: 错误:从类型‘int*’到类型‘socklen_t*’的转换无效

/tmp/lamp/mysql-5.5.20/sql/mysqld.cc:5198: 错误:  初始化‘int getsockname(int, sockaddr*, socklen_t*)’的实参 3

make[2]: *** [sql/CMakeFiles/sql.dir/mysqld.cc.o] 错误 1

make[1]: *** [sql/CMakeFiles/sql.dir/all] 错误 2


办法:清除之前的编译信息 

 [root@localhost mysql-5.5.20]# make clean

 [root@localhost mysql-5.5.20]# rm CMakeCache.txt



3. 安装成功,但是mysql服务起不了

Starting MySQL...The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).   

检查日志发现

tail -n 30 /var/log/mysqld.log

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist


看来是初始化的问题,

执行初始化脚本

mysql_install_db –usrer=mysql datadir=/usr/local/mysql


还是不行,检查日志:

tail /var/log/mysqld.log

mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' 


ll /tmp/mysql.sock 发现没有 mysql.sock文件,

原来默认在/var/lib/mysql/mysql.sock

所以创建软链接

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock


/etc/init.d/mysqld restart 重启mysql

完成!