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.
shell-project/database/source_mysql.sh

94 lines
2.7 KiB

2 years ago
#!/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