#!/bin/bash
source ./color.sh
#yum -y install ncurses ncurses-devel openssl-devel bison libgcrypt gcc gcc-c++ make cmake
mysql_env(){
package_list="ncurses ncurses-devel helloworld openssl-devel bison libgcrypt gcc gcc-c++ make cmake"
info "软件包ncurses ncurses-devel openssl-devel bison libgcrypt gcc gcc-c++ make cmake即将被安装"
for package in ${package_list}
do
yum -y install $package &>/dev/null
if [ $? -eq 0 ];then
success "软件${package}安装成功"
else
error "软件${package}安装失败"
fi
done
}
source_code_package(){
read -p "请输入你的源码包路径:" source_code_path
if [ ! -f ${source_code_path:-null} ];then
cd /opt/ && wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.24.tar.gz
echo "/opt/mysql-boost-5.7.24.tar.gz"
else
echo "${source_code_path}"
fi
}
source_code_package
mysql_install(){
if id mysql &>/dev/null;then
success "MySQL用户已存在"
else
groupadd mysql
useradd -M -g mysql -s /sbin/nologin mysql
success "MySQL用户已创建成功"
fi
mkdir -p /usr/local/{data,mysql,log,tmp}
chown -R mysql:mysql /usr/local/{data,mysql,log,tmp}
success "MySQL数据目录已创建完成"
mysql_source_code_package=$(source_code_package)
tar -xf $mysql_source_code_package
cd mysql-5.7.24 && \
cmake . \
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/usr/local/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 && \
make -j 2 && make install >>/dev/null
if [ $? -eq 0 ];then
echo -e "\033[31m make加载成功 \033[0m"
else
echo -e "\033[31m make加载失败 \033[0m"
break
fi
}
mysql_install_done(){
echo 'export PATH=$PATH:/usr/local/mysql/bin'>>/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
chown -R mysql.mysql /usr/local/mysql
cat >/etc/my.cnf <<EOF
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/data
tmpdir = /usr/local/tmp
socket = /usr/local/tmp/mysql.sock
pid_file = /usr/local/tmp/mysqld.pid
log_error = /usr/local/log/mysql_error.log
slow_query_log_file = /usr/local/log/slow_warn.log
server_id = 1
user = mysql
port = 3306
bind-address = 0.0.0.0
character-set-server = utf8
default_storage_engine = InnoDB
EOF
cd /usr/local/mysql/bin
mysqld --defaults-file=/etc/my.cnf --initialize --user='mysql'
passwd=$(awk '/temporary password/{p=$NF}END{print p}' /usr/local/log/mysql_error.log)
nohup mysqld_safe --defaults-file=/etc/my.cnf &
mysqladmin -uroot -p"$passwd" password "123456"
}
service_manager(){
cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
systemctl start mysqld
systemctl enable mysqld
}
main(){
mysql_env
# source_code_package
mysql_install
mysql_install_done
service_manager
}
main