您的位置:首页 > 数据库 > MySQL

mysql 自动安装脚本,记得提前安装依赖包

2015-07-28 17:42 696 查看
该脚本实现自动安装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
完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql cmake Error