You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.7 KiB
93 lines
2.7 KiB
#!/usr/bin/bash
|
|
|
|
source ./color.sh
|
|
source ./checkos.sh
|
|
source ./init.sh
|
|
# 数据库安装目录
|
|
install_dir=/usr/local/mysql
|
|
# 数据存放目录
|
|
data_dir=${install_dir}/data
|
|
# 配置文件存放目录
|
|
config_dir=/etc
|
|
# 解压目录名称
|
|
source_dir=mysql-5.7.27
|
|
# 默认端口
|
|
port=3306
|
|
# 源码包名称
|
|
packagename="mysql-boost-5.7.27.tar.gz"
|
|
# 编译线程数
|
|
cpus=`grep "processor" /proc/cpuinfo | wc -l`
|
|
|
|
checkEnv(){
|
|
[ -d /var/lib/mysql ] && color yellow "检测到本机可能使用yum安装了mysql,可能会造成冲突,请问是否继续安装[Y|N]"
|
|
read result
|
|
if [ "$result" = 'Y' ];then
|
|
color green "安装继续"
|
|
else
|
|
color green "退出脚本"
|
|
exit 1
|
|
fi
|
|
[ -d /usr/local/mysql ] && color red "检测到${install_dir}已存在,请手动处理" && exit 1 || \
|
|
color green "环境检测完成"
|
|
}
|
|
|
|
installPackage(){
|
|
yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make glibc automake autoconf cmake && \
|
|
color green "依赖包安装完成" || \
|
|
color red "依赖包安装异常,请修复yum源[需要官方yum以及epelyum]"
|
|
color green "开始准备源码包"
|
|
sed -n -e '1,/^exit 0$/!p' $0 > ./$packagename
|
|
tar xvf $packagename && \
|
|
color green "源码包准备完成" && \
|
|
cd $source_dir/
|
|
cmake . \
|
|
-DWITH_BOOST=boost/boost_1_59_0/ \
|
|
-DCMAKE_INSTALL_PREFIX=$install_dir \
|
|
-DSYSCONFDIR=$config_dir \
|
|
-DMYSQL_DATADIR=$data_dir \
|
|
-DINSTALL_MANDIR=/usr/share/man \
|
|
-DMYSQL_TCP_PORT=$port \
|
|
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
|
|
-DDEFAULT_CHARSET=utf8 \
|
|
-DEXTRA_CHARSETS=all \
|
|
-DDEFAULT_COLLATION=utf8_general_ci \
|
|
-DWITH_READLINE=1 \
|
|
-DWITH_SSL=system \
|
|
-DWITH_EMBEDDED_SERVER=1 \
|
|
-DENABLED_LOCAL_INFILE=1 \
|
|
-DWITH_INNOBASE_STORAGE_ENGINE=1 && \
|
|
make -j $cpus && make install && \
|
|
color green "编译安装完成"
|
|
}
|
|
|
|
down(){
|
|
cat >> /etc/profile.d/source_mysql.sh <<\EOF
|
|
PATH=/usr/local/mysql/bin:$PATH
|
|
export PATH
|
|
EOF
|
|
password=$(${install_dir}/bin/mysqld --initialize --user=mysql --basedir=$install_dir --datadir=$data_dir 2>&1 | grep "A temporary password" | awk '{print $NF}')
|
|
if [ -n "$password" ];then
|
|
color green "初始化完成,初始密码为$password"
|
|
color green "通过mysqladmin -p$password password '新密码'进行修改密码"
|
|
color green "启动数据库 mysqld_safe &\nmysql 安装完成"
|
|
else
|
|
color red "初始化异常,请手动检查"
|
|
fi
|
|
read -p '是否需要清理安装环境[Y|N]: ' ask
|
|
if [ "$ask" = 'Y' ];then
|
|
rm -rvf $source_dir
|
|
rm -rvf $packagename
|
|
color green "清理完成"
|
|
else
|
|
color green "脚本退出"
|
|
fi
|
|
}
|
|
|
|
|
|
main(){
|
|
checkEnv
|
|
installPackage
|
|
down
|
|
}
|
|
main
|
|
exit 0
|
|
|