当前位置: 首页 > 工具软件 > EZHTTP > 使用案例 >

centos ezhttp mysql_ezhttp/mysql.sh at master · centos-bz/ezhttp · GitHub

柴霖
2023-12-01

#mysql安装前设置

mysql_preinstall_settings(){

display_menu mysql last

#自定义版本支持

if [ "$mysql" == "custom_version" ];then

while true

do

read -p "input version.(ie.mysql-5.1.71 mysql-5.5.32 mysql-5.6.12 mysql-5.7.9 mysql-8.0.11): " version

#判断版本号是否有效

if echo "$version" | grep -q -E '^mysql-5\.1\.[0-9]+$';then

mysql5_1_filename=$version

mysql=$version

set_dl $version "http://cdn.mysql.com/Downloads/MySQL-5.1/${mysql}.tar.gz"

custom_info="$custom_info\nmysql5_1_filename=$version\n$(get_dl_valname $version)=$(get_dl $version)\n"

break

elif echo "$version" | grep -q -E '^mysql-5\.5\.[0-9]+$';then

mysql5_5_filename=$version

mysql=$version

set_dl $version "http://cdn.mysql.com/Downloads/MySQL-5.5/${mysql}.tar.gz"

custom_info="$custom_info\nmysql5_5_filename=$version\n$(get_dl_valname $version)=$(get_dl $version)\n"

break

elif echo "$version" | grep -q -E '^mysql-5\.6\.[0-9]+$';then

mysql5_6_filename=$version

mysql=$version

set_dl $version "http://cdn.mysql.com/Downloads/MySQL-5.6/${mysql}.tar.gz"

custom_info="$custom_info\nmysql5_6_filename=$version\n$(get_dl_valname $version)=$(get_dl $version)\n"

break

elif echo "$version" | grep -q -E '^mysql-5\.7\.[0-9]+$';then

mysql5_7_filename=$version

mysql=$version

set_dl $version "http://cdn.mysql.com/Downloads/MySQL-5.7/${mysql}.tar.gz"

custom_info="$custom_info\nmysql5_7_filename=$version\n$(get_dl_valname $version)=$(get_dl $version)\n"

break

elif echo "$version" | grep -q -E '^mysql-8\.0\.[0-9]+$';then

mysql8_0_filename=$version

mysql=$version

set_dl $version "http://cdn.mysql.com/Downloads/MySQL-8.0/${mysql}.tar.gz"

custom_info="$custom_info\nmysql8_0_filename=$version\n$(get_dl_valname $version)=$(get_dl $version)\n"

break

else

echo "version invalid,please reinput."

fi

done

fi

if [ "$mysql" != "do_not_install" ];then

while true; do

#mysql安装路径

read -p "$mysql install location(default:/usr/local/mysql,leave blank for default): " mysql_location

mysql_location=${mysql_location:="/usr/local/mysql"}

mysql_location=`filter_location "$mysql_location"`

echo "$mysql install location: $mysql_location"

if [[ -e $mysql_location ]]; then

yes_or_no "the location $mysql_location found,maybe mysql had been installed.skip mysql installation?[Y/n]" "mysql=do_not_install" "" y

if [[ "$yn" == "n" ]]; then

continue

else

break

fi

else

break

fi

done

if [ "$mysql" != "do_not_install" ];then

#当只编译client时,不必输入data和密码

if [ "$mysql" != "libmysqlclient18" ];then

#mysql data路径

read -p "mysql data location(default:${mysql_location}/data,leave blank for default): " mysql_data_location

mysql_data_location=${mysql_data_location:=$mysql_location/data}

mysql_data_location=`filter_location "$mysql_data_location"`

echo "$mysql data location: $mysql_data_location"

#mysql端口设置

while true;do

read -p "mysql port number(default:3306,leave blank for default): " mysql_port_number

mysql_port_number=${mysql_port_number:=3306}

if verify_port "$mysql_port_number";then

echo "mysql port number: $mysql_port_number"

break

else

echo "port number $mysql_port_number is invalid,please reinput."

fi

done

#mysql密码设置

read -p "mysql server root password (default:root,leave blank for default): " mysql_root_pass

mysql_root_pass=${mysql_root_pass:=root}

echo "$mysql root password: $mysql_root_pass"

#定义mysql编译参数

if [ "$mysql" == "${mysql5_1_filename}" ];then

if check_sys packageSupport;then

other_option=""

else

other_option="--with-named-curses-libs=${depends_prefix}/${ncurses_filename2}/lib/libncurses.a"

fi

mysql_configure_args="--prefix=${mysql_location} --sysconfdir=${mysql_location}/etc --with-unix-socket-path=${mysql_data_location}/mysql.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=complex --with-plugins=max --with-mysqld-ldflags=-all-static --enable-assembler $other_option"

elif [ "$mysql" == "${mysql5_5_filename}" ] || [ "$mysql" == "libmysqlclient18" ];then

if check_sys packageSupport;then

other_option=""

else

other_option="-DCURSES_LIBRARY=${depends_prefix}/${ncurses_filename}/lib/libncurses.a -DCURSES_INCLUDE_PATH=${depends_prefix}/${ncurses_filename}/include/"

fi

mysql_configure_args="-DCMAKE_INSTALL_PREFIX=${mysql_location} -DSYSCONFDIR=${mysql_location}/etc -DMYSQL_UNIX_ADDR=${mysql_data_location}/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 $other_option"

elif [ "$mysql" == "${mysql5_6_filename}" ];then

if check_sys packageSupport;then

other_option=""

else

other_option="-DCURSES_LIBRARY=${depends_prefix}/${ncurses_filename}/lib/libncurses.a -DCURSES_INCLUDE_PATH=${depends_prefix}/${ncurses_filename}/include/"

fi

mysql_configure_args="-DCMAKE_INSTALL_PREFIX=${mysql_location} -DSYSCONFDIR=${mysql_location}/etc -DMYSQL_UNIX_ADDR=${mysql_data_location}/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DENABLED_LOCAL_INFILE=1 $other_option"

elif [ "$mysql" == "${mysql5_7_filename}" ];then

if check_sys packageSupport;then

other_option=""

else

other_option="-DCURSES_LIBRARY=${depends_prefix}/${ncurses_filename}/lib/libncurses.a -DCURSES_INCLUDE_PATH=${depends_prefix}/${ncurses_filename}/include/"

fi

mysql_configure_args="-DCMAKE_INSTALL_PREFIX=${mysql_location} -DWITH_BOOST=$cur_dir/soft/${boost_1_59_filename} -DSYSCONFDIR=${mysql_location}/etc -DMYSQL_UNIX_ADDR=${mysql_data_location}/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 $other_option"

elif [ "$mysql" == "${mysql8_0_filename}" ];then

if check_sys packageSupport;then

other_option=""

else

other_option="-DCURSES_LIBRARY=${depends_prefix}/${ncurses_filename}/lib/libncurses.a -DCURSES_INCLUDE_PATH=${depends_prefix}/${ncurses_filename}/include/"

fi

mysql_configure_args="-DCMAKE_INSTALL_PREFIX=${mysql_location} -DWITH_BOOST=$cur_dir/soft/${boost_1_66_filename} -DSYSCONFDIR=${mysql_location}/etc -DMYSQL_UNIX_ADDR=${mysql_data_location}/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 $other_option"

fi

#提示是否更改编译参数

echo -e "the $mysql configure parameter is:\n${mysql_configure_args}\n\n"

yes_or_no "Would you like to change it?[N/y]" "read -p 'please input your new mysql configure parameter: ' mysql_configure_args" "echo 'you select no,configure parameter will not be changed.'" n

if [[ "$yn" == "y" ]];then

while true; do

#检查编译参数是否为空

if [ "$mysql_configure_args" == "" ];then

echo "input error.mysql configure parameter can not be empty,please reinput."

read -p 'please input your new mysql configure parameter: ' mysql_configure_args

continue

fi

#检查是否设置prefix

mysql_location=$(echo "$mysql_configure_args" | sed -r -n 's/.*DCMAKE_INSTALL_PREFIX=([^ ]*).*/\1/p')

if [[ "$mysql_location" == "" ]]; then

echo "input error.mysql configure parameter prefix can not be empty,please reinput."

read -p 'please input your new mysql configure parameter: ' mysql_configure_args

continue

fi

if [[ -e $mysql_location ]]; then

yes_or_no "the location $mysql_location found,maybe mysql had been installed.skip mysql installation?[Y/n]" "mysql=do_not_install" "" y

if [[ "$yn" == "n" ]]; then

read -p 'please input your new mysql configure parameter: ' mysql_configure_args

continue

else

break

fi

fi

break

done

[[ "$mysql" != "do_not_install" ]] && echo -e "\nyour new mysql configure parameter is : ${mysql_configure_args}\n"

fi

else

if check_sys packageSupport;then

other_option=""

else

other_option="-DCURSES_LIBRARY=${depends_prefix}/${ncurses_filename}/lib/libncurses.a -DCURSES_INCLUDE_PATH=${depends_prefix}/${ncurses_filename}/include/ -DWITH_SSL=${depends_prefix}/${openssl_filename}"

fi

mysql_configure_args="-DCMAKE_INSTALL_PREFIX=${mysql_location} -DWITH_BOOST=$cur_dir/soft/${boost_1_59_filename} -DSYSCONFDIR=${mysql_location}/etc -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 $other_option"

fi

fi

fi

}

#安装mysql server

install_mysqld(){

if [ "$mysql" == "${mysql5_1_filename}" ];then

#安装依赖

if check_sys packageManager apt;then

apt-get -y install libncurses5-dev

elif check_sys packageManager yum;then

yum -y install ncurses-devel

else

check_installed "install_ncurses" "${depends_prefix}/${ncurses_filename}"

fi

download_file "${mysql5_1_filename}.tar.gz"

cd $cur_dir/soft/

tar xzvf ${mysql5_1_filename}.tar.gz

cd ${mysql5_1_filename}

make clean

error_detect "./configure ${mysql_configure_args}"

error_detect "parallel_make"

error_detect "make install"

config_mysql 5.1

elif [ "$mysql" == "${mysql5_5_filename}" ] || [ "$mysql" == "libmysqlclient18" ];then

#安装依赖

if check_sys packageManager apt;then

apt-get -y install libncurses5-dev cmake m4 bison

elif check_sys packageManager yum;then

yum -y install ncurses-devel cmake m4 bison

else

check_installed "install_ncurses" "${depends_prefix}/${ncurses_filename}"

check_installed "install_cmake" "${depends_prefix}/${cmake_filename}"

check_installed "install_m4" "${depends_prefix}/${m4_filename}"

check_installed "install_bison" "${depends_prefix}/${bison_filename}"

fi

download_file "${mysql5_5_filename}.tar.gz"

cd $cur_dir/soft/

rm -rf ${mysql5_5_filename}

tar xzvf ${mysql5_5_filename}.tar.gz

cd ${mysql5_5_filename}

mkdir build

cd build

error_detect "cmake ${mysql_configure_args} .."

#为只编译client作处理

if [ "$mysql" == "libmysqlclient18" ];then

error_detect "make mysqlclient libmysql"

mkdir -p ${mysql_location}/lib ${mysql_location}/bin

\cp -a libmysql/libmysqlclient* ${mysql_location}/lib

\cp -a scripts/mysql_config ${mysql_location}/bin

\cp -a include ${mysql_location}

else

error_detect "parallel_make"

error_detect "make install"

config_mysql 5.5

fi

elif [ "$mysql" == "${mysql5_6_filename}" ];then

#安装依赖

if check_sys packageManager apt;then

apt-get -y install libncurses5-dev cmake m4 bison

elif check_sys packageManager yum;then

#解决CentOS 6 GCC 版本太低的问题

if check_sys packageManager yum;then

yum -y install centos-release-scl

yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils

echo "source /opt/rh/devtoolset-6/enable" >>/etc/profile

source /opt/rh/devtoolset-6/enable

fi

check_installed "install_cmake" "${depends_prefix}/${cmake_filename}"

yum -y install ncurses-devel m4 bison

else

check_installed "install_ncurses" "${depends_prefix}/${ncurses_filename}"

check_installed "install_cmake" "${depends_prefix}/${cmake_filename}"

check_installed "install_m4" "${depends_prefix}/${m4_filename}"

check_installed "install_bison" "${depends_prefix}/${bison_filename}"

fi

download_file "${mysql5_6_filename}.tar.gz"

cd $cur_dir/soft/

rm -rf ${mysql5_6_filename}

tar xzvf ${mysql5_6_filename}.tar.gz

cd ${mysql5_6_filename}

mkdir build

cd build

error_detect "cmake ${mysql_configure_args} .."

error_detect "parallel_make"

error_detect "make install"

config_mysql 5.6

elif [ "$mysql" == "${mysql5_7_filename}" ];then

#安装依赖

if check_sys packageManager apt;then

apt-get -y install libncurses5-dev cmake m4 bison libssl-dev pkg-config

elif check_sys packageManager yum;then

yum -y install ncurses-devel m4 bison openssl-devel pkg-config

#解决CentOS 6 GCC 版本太低的问题

if CentOSVerCheck 6;then

yum -y install centos-release-scl

yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils

echo "source /opt/rh/devtoolset-6/enable" >>/etc/profile

source /opt/rh/devtoolset-6/enable

fi

check_installed "install_cmake" "${depends_prefix}/${cmake_filename}"

else

check_installed "install_ncurses" "${depends_prefix}/${ncurses_filename}"

check_installed "install_cmake" "${depends_prefix}/${cmake_filename}"

check_installed "install_m4" "${depends_prefix}/${m4_filename}"

check_installed "install_bison" "${depends_prefix}/${bison_filename}"

check_installed "install_openssl" "${depends_prefix}/${openssl_filename}"

fi

# 下载boost

download_file "${boost_1_59_filename}.tar.gz"

cd $cur_dir/soft/

rm -rf ${boost_1_59_filename}

tar xzvf ${boost_1_59_filename}.tar.gz

download_file "${mysql5_7_filename}.tar.gz"

cd $cur_dir/soft/

rm -rf ${mysql5_7_filename}

tar xzvf ${mysql5_7_filename}.tar.gz

cd ${mysql5_7_filename}

mkdir build

cd build

error_detect "cmake ${mysql_configure_args} .."

error_detect "parallel_make"

error_detect "make install"

config_mysql 5.7

elif [ "$mysql" == "${mysql8_0_filename}" ];then

#安装依赖

if check_sys packageManager apt;then

apt-get -y install libncurses5-dev cmake m4 bison

elif check_sys packageManager yum;then

yum -y install ncurses-devel m4 bison

#MySQL 8.0 为 C++14 标准 ,gcc 版本必须在5.3以上

yum -y install centos-release-scl

yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils

echo "source /opt/rh/devtoolset-6/enable" >>/etc/profile

source /opt/rh/devtoolset-6/enable

else

check_installed "install_ncurses" "${depends_prefix}/${ncurses_filename}"

check_installed "install_cmake" "${depends_prefix}/${cmake_filename}"

check_installed "install_m4" "${depends_prefix}/${m4_filename}"

check_installed "install_bison" "${depends_prefix}/${bison_filename}"

fi

# 下载boost

download_file "${boost_1_66_filename}.tar.gz"

cd $cur_dir/soft/

rm -rf ${boost_1_66_filename}

tar xzvf ${boost_1_66_filename}.tar.gz

download_file "${mysql8_0_filename}.tar.gz"

cd $cur_dir/soft/

rm -rf ${mysql8_0_filename}

tar xzvf ${mysql8_0_filename}.tar.gz

cd ${mysql8_0_filename}

mkdir build

cd build

error_detect "cmake ${mysql_configure_args} .."

error_detect "parallel_make"

error_detect "make install"

config_mysql 8.0

fi

#记录mysql安装位置

echo "mysql_location=$mysql_location" >> /etc/ezhttp_info_do_not_del

#解决64位系统php可能找不到mysqlclient的问题

add_to_env "${mysql_location}"

if [ -d "${mysql_location}/lib" ] && [ ! -d "${mysql_location}/lib64" ];then

cd ${mysql_location}

ln -s lib lib64

fi

}

#配置mysql

config_mysql(){

local version=$1

useradd -M -s /bin/false mysql

mkdir -p ${mysql_location}/etc/ ${mysql_data_location}

#防止mysql使用错误的my.cnf文件

mv /etc/my.cnf /etc/my.cnf_bak

mv /etc/mysql/my.cnf /etc/mysql/my.cnf_bak

#根据系统内存生成my.cnf

local sysMemory=512M

local storage=InnoDB

local totalMemory=$(awk 'NR==1{print $2}' /proc/meminfo)

if [[ $totalMemory -lt 393216 ]];then

sysMemory=256M

storage=MyISAM

elif [[ $totalMemory -lt 786432 ]];then

sysMemory=512M

storage=MyISAM

elif [[ $totalMemory -lt 1572864 ]];then

sysMemory=1G

elif [[ $totalMemory -lt 3145728 ]];then

sysMemory=2G

elif [[ $totalMemory -lt 6291456 ]];then

sysMemory=4G

elif [[ $totalMemory -lt 12582912 ]];then

sysMemory=8G

elif [[ $totalMemory -lt 25165824 ]];then

sysMemory=16G

else

sysMemory=32G

fi

make_mysql_my_cnf "$sysMemory" "$storage" "${mysql_data_location}" "true" "false" "${mysql_location}/etc/my.cnf" "${mysql_port_number}"

#centos 7 does not include perl-Data-Dumper package

if check_sys sysRelease centos && CentOSVerCheck 7;then

yum -y install perl-Data-Dumper

fi

if [ $version == "5.1" ];then

rm -f /etc/init.d/mysqld

\cp -f ${mysql_location}/share/mysql/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

${mysql_location}/bin/mysql_install_db --basedir=${mysql_location} --datadir=${mysql_data_location} --defaults-file=${mysql_location}/etc/my.cnf --user=mysql

elif [ $version == "5.5" ];then

\cp -f ${mysql_location}/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

${mysql_location}/scripts/mysql_install_db --basedir=${mysql_location} --datadir=${mysql_data_location} --defaults-file=${mysql_location}/etc/my.cnf --user=mysql

elif [ $version == "5.6" ];then

\cp -f ${mysql_location}/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

${mysql_location}/scripts/mysql_install_db --basedir=${mysql_location} --datadir=${mysql_data_location} --defaults-file=${mysql_location}/etc/my.cnf --user=mysql

elif [ $version == "5.7" ];then

\cp -f ${mysql_location}/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

${mysql_location}/bin/mysqld --initialize-insecure --basedir=${mysql_location} --datadir=${mysql_data_location} --user=mysql

elif [ $version == "8.0" ];then

\cp -f ${mysql_location}/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

# 删除query-cache

sed -i '/query-cache/d' ${mysql_location}/etc/my.cnf

${mysql_location}/bin/mysqld --initialize-insecure --basedir=${mysql_location} --datadir=${mysql_data_location} --user=mysql

fi

\cp -f /etc/init.d/mysqld /etc/init.d/mysqld${mysql_port_number}

chown -R mysql ${mysql_location} ${mysql_data_location}

cd /usr/bin/

ln -s $mysql_location/bin/mysql

ln -s $mysql_location/bin/mysqldump

boot_start mysqld

#add to /etc/ld.so.conf.d/mysql.conf

! grep "${mysql_location}/lib$" /etc/ld.so.conf.d/mysql.conf && echo "${mysql_location}/lib" >> /etc/ld.so.conf.d/mysql.conf

! grep "${mysql_location}/lib64$" /etc/ld.so.conf.d/mysql.conf && echo "${mysql_location}/lib64" >> /etc/ld.so.conf.d/mysql.conf

ldconfig

}

 类似资料:

相关阅读

相关文章

相关问答