#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH public_file=/www/server/panel/install/public.sh . $public_file publicFileMd5=$(md5sum ${public_file} 2>/dev/null|awk '{print $1}') md5check="f94b33b66e8a6bc378245070e3d1b1b9" if [ "${publicFileMd5}" != "${md5check}" ] && [ -z "${NODE_URL}" ]; then wget -O Tpublic.sh https://download.bt.cn/install/public.sh -T 20; publicFileMd5=$(md5sum Tpublic.sh 2>/dev/null|awk '{print $1}') if [ "${publicFileMd5}" == "${md5check}" ]; then \cp -rpa Tpublic.sh $public_file fi rm -f Tpublic.sh . $public_file fi download_Url=$NODE_URL Root_Path=`cat /var/bt_setupPath.conf` Setup_Path=$Root_Path/server/mysql Data_Path=$Root_Path/server/data Is_64bit=`getconf LONG_BIT` run_path='/root' mysql_51='5.1.73' mysql_55='5.5.62' mysql_56='5.6.50' mysql_57='5.7.44' mysql_80='8.0.36' mysql_84='8.4.0' mysql_90='9.0.1' mariadb_55='5.5.55' mysql_mariadb_100='10.0.38' mysql_mariadb_101='10.1.47' mysql_mariadb_102='10.2.38' mysql_mariadb_103='10.3.39' mysql_mariadb_104='10.4.34' mysql_mariadb_105='10.5.23' mysql_mariadb_106='10.6.16' mysql_mariadb_107='10.7.3' mysql_mariadb_108='10.8.2' mysql_mariadb_1011='10.11.6' mysql_mariadb_113='11.3.2' alisql_version='AliSQL-5.6.32' Centos7Check=$(cat /etc/redhat-release | grep ' 7.' | grep -iE 'centos') Centos8Check=$(cat /etc/redhat-release | grep ' 8.' | grep -iE 'centos|Red Hat') CentosStream8Check=$(cat /etc/redhat-release |grep -i "Centos Stream"|grep 8) Centos9Check=$(cat /etc/redhat-release | grep ' 9.') ky10Check=$(rpm -aq|grep ky10.loongarch64) ky1086Check=$(rpm -aq|grep ky10.x86_64) if [ "${ky10Check}" ];then yum install libtirpc-devel.loongarch64 -y fi if [ "${ky1086Check}" ];then yum install libtirpc-devel.x86_64 -y fi if [ "${Centos9Check}" ];then dnf --enablerepo=crb install libtirpc-devel -y fi if [ -z "${cpuCore}" ]; then cpuCore="1" fi DEBIAN_12_C=$(cat /etc/issue|grep Debian|grep 12) UBUNTU_22_C=$(cat /etc/issue|grep Ubuntu|grep 22) EL9_CHECK=$(uname -a|grep el9.x86) if [ "${DEBIAN_12_C}" ] || [ "${UBUNTU_22_C}" ] || [ "${EL9_CHECK}" ];then if [ "${2}" == "5.1" ] || [ "${2}" == "5.6" ] || [ "${2}" == "alisql" ];then echo "============================================================================" echo "${DEBIAN_12_C}${UBUNTU_22_C}${EL9_CHECK}系统不支持安装mysql-${2}" echo "请选择安装mysql-5.5/5.7/8.0!" exit 1 fi fi UBUNTU_24=$(cat /etc/issue|grep Ubuntu|grep 24) if [ "${UBUNTU_24}" ];then apt-get install libtirpc-dev -y fi if [ "${EL9_CHECK}" ];then yum install gnutls gnutls-devel -y fi if [ "${UBUNTU_22_C}" ] || [ "${UBUNTU_24}" ];then apt-get install libgnutls28-dev -y fi MEM_INFO=$(free -m|grep Mem|awk '{printf("%.f",($2)/1024)}') if [ "${cpuCore}" != "1" ] && [ "${MEM_INFO}" != "0" ];then if [ "${cpuCore}" -gt "${MEM_INFO}" ];then cpuCore="${MEM_INFO}" fi else cpuCore="1" fi #检测hosts文件 hostfile=`cat /etc/hosts | grep 127.0.0.1 | grep localhost` if [ "${hostfile}" = '' ]; then echo "127.0.0.1 localhost localhost.localdomain" >> /etc/hosts fi Error_Send(){ MIN_O=$(date +%M) if [ $((MIN_O % 2)) -eq 0 ]; then exit 1 fi if [ ! -f "/tmp/mysql_i.pl" ];then touch /tmp/mysql_i.pl TIME=$(date "+%Y-%m-%d %H:%M:%S") P_VERSION=$(cat /www/server/panel/class/common.py|grep g.version|grep -oE 8.0.[0-9]+) ls /etc/init.d/ | xargs -n 5 | pr -t -5 > /tmp/mysql_err.pl tail -n 25 /tmp/mysql_config.pl /tmp/mysql_make.pl >> /tmp/mysql_err.pl echo Bit:${SYS_BIT} Mem:${MEM_TOTAL}M Core:${CPU_INFO} gcc:${GCC_VER} cmake:${CMAKE_VER} >> /tmp/mysql_err.pl echo ${SYS_VERSION} ${SYS_INFO} >> /tmp/mysql_err.pl echo "$sqlVersion install Failed" >> /tmp/mysql_err.pl ERR_MSG=$(cat /tmp/mysql_err.pl) rm -f /tmp/mysql_config.pl /tmp/mysql_make.pl /tmp/mysql_install.pl /tmp/mysql_err.pl curl --request POST \ --url "http://api.bt.cn/bt_error/index.php" \ --data "UID=89045" \ --data "PANEL_VERSION=${P_VERSION}"\ --data "REQUEST_DATE=${TIME}" \ --data "OS_VERSION=${SYS_VERSION}" \ --data "REMOTE_ADDR=192.168.168.1641" \ --data "REQUEST_URI=mysql" \ --data "USER_AGENT=${SYS_INFO}" \ --data "ERROR_INFO=${ERR_MSG}" \ --data "PACK_TIME=${TIME}" \ --data "TYPE=3" fi exit 1 } Mem_Check(){ MEM_MB=$(free -m | grep Mem | awk '{print $7}') MIN_MEM=0 Check_Memory() { if [ "${MEM_MB}" -lt "${MIN_MEM}" ]; then if [ ! -f "$1" ]; then echo "============================================================================" echo "检测到当前空闲内存为${MEM_MB}MB, ${2}至少需要 ${MIN_MEM}MB 空闲内存才可以进行${3}" echo "请尝试在面板首页中释放内存后再尝试${3}" echo "如内存仍不足,可执行以下命令后尝试${3},将会跳过内存验证,强制${3}" echo "命令:touch $1" echo "注:强制${3}将可能导致服务器异常,请做好备份!" if [ "$3" == "安装" ];then echo "部分系统不支持极速安装,仅支持编译安装,如出现使用极速安装提示上面的提醒" echo "建议更换 CentOS-7/Ubuntu-22/Debian-12 进行极速安装" fi exit 1 else rm -f "$1" fi fi } if [ "${actionType}" == "update" ]; then if [ "${version}" == "8.0" ] || [ "${version}" == "8.4" ] || [ "${version}" == "9.0" ]; then MIN_MEM=5192 Check_Memory "/www/server/panel/install/u_mysql.pl" "升级 MySQL" "升级" elif [ "${version}" == "5.7" ]; then MIN_MEM=2000 Check_Memory "/www/server/panel/install/u_mysql.pl" "升级 MySQL" "升级" fi elif [ "${actionType}" == "install" ]; then if [ "${version}" == "5.7" ]; then MIN_MEM=1560 Check_Memory "/www/server/panel/install/i_mysql.pl" "编译安装 MySQL-5.7" "安装" elif [ "${version}" == "8.0" ] || [ "${version}" == "8.4" ] || [ "${version}" == "9.0" ]; then MIN_MEM=4096 Check_Memory "/www/server/panel/install/i_mysql.pl" "编译安装 MySQL-8.0" "安装" fi fi } System_Lib(){ if [ "${PM}" == "yum" ] || [ "${PM}" == "dnf" ] ; then Pack="cmake libarchive" ${PM} install ${Pack} -y yum install libuv openldap-devel -y elif [ "${PM}" == "apt-get" ]; then Pack="cmake" ${PM} install ${Pack} -y fi } gccVersionCheck(){ gccV=$(gcc -dumpversion|grep ^[789]) if [ "${gccV}" ]; then sed -i "s/field_names\[i\]\[num_fields\*2\].*/field_names\[i\]\[num_fields\*2\]= NULL;/" client/mysql.cc fi } Service_Add(){ if [ "${PM}" == "yum" ] || [ "${PM}" == "dnf" ]; then chkconfig --add mysqld chkconfig --level 2345 mysqld on elif [ "${PM}" == "apt-get" ]; then update-rc.d mysqld defaults fi if [ "$?" == "127" ];then wget -O /usr/lib/systemd/system/mysqld.service ${download_Url}/init/systemd/mysqld.service systemctl enable mysqld.service fi } Service_Del(){ if [ "${PM}" == "yum" ] || [ "${PM}" == "dnf" ]; then chkconfig --del mysqld chkconfig --level 2345 mysqld off elif [ "${PM}" == "apt-get" ]; then update-rc.d mysqld remove fi } printVersion(){ if [ "${version}" = "alisql" ];then echo "${alisql_version}" > ${Setup_Path}/version.pl elif [ "${GREATSQL_VER}" ];then echo "greatsql_${GREATSQL_VER}" > ${Setup_Path}/version.pl echo "greatsql_${GREATSQL_VER}" > ${Setup_Path}/version_check.pl elif [ -z "${mariadbCheck}" ]; then echo "${sqlVersion}" > ${Setup_Path}/version.pl else echo "mariadb_${sqlVersion}" > ${Setup_Path}/version.pl fi } Install_Rpcgen(){ if [ ! -f "/usr/bin/rpcgen" ];then wget ${download_Url}/src/rpcsvc-proto-1.4.tar.gz tar -xvf rpcsvc-proto-1.4.tar.gz cd rpcsvc-proto-1.4 ./configure --prefix=/usr/local/rpcgen make make install ln -sf /usr/local/rpcgen/bin/rpcgen /usr/bin/rpcgen cd .. rm -rf rpcsvc-proto* fi } Install_Openssl111(){ opensslCheck=$(/usr/local/openssl111/bin/openssl version|grep 1.1.1) if [ -z "${opensslCheck}" ]; then opensslVersion="1.1.1o" cd ${run_path} wget ${download_Url}/src/openssl-${opensslVersion}.tar.gz -T 20 tar -zxf openssl-${opensslVersion}.tar.gz rm -f openssl-${opensslVersion}.tar.gz cd openssl-${opensslVersion} ./config --prefix=/usr/local/openssl111 zlib-dynamic make -j${cpuCore} make install echo "/usr/local/openssl111/lib" >> /etc/ld.so.conf.d/openssl111.conf ldconfig cd .. rm -rf openssl-${opensslVersion} fi WITH_SSL="-DWITH_SSL=/usr/local/openssl111" } Setup_Mysql_PyDb(){ pyMysql=$1 pyMysqlVer=$2 wget -O src.zip ${download_Url}/install/src/${pyMysql}-${pyMysqlVer}.zip -T 20 unzip src.zip mv ${pyMysql}-${pyMysqlVer} src cd src python setup.py install cd .. rm -f src.zip rm -rf src /etc/init.d/bt reload } Install_Mysql_PyDb(){ pip uninstall MySQL-python mysqlclient PyMySQL -y pipUrl=$(cat /root/.pip/pip.conf|awk 'NR==2 {print $3}') [ "${pipUrl}" ] && checkPip=$(curl --connect-timeout 5 --head -s -o /dev/null -w %{http_code} ${pipUrl}) pyVersion=$(python -V 2>&1|awk '{printf ("%d",$2)}') if [ "${pyVersion}" == "2" ];then if [ -f "${Setup_Path}/mysqlDb3.pl" ]; then local pyMysql="mysqlclient" local pyMysqlVer="1.3.12" else local pyMysql="MySQL-python" local pyMysqlVer="1.2.5" fi if [ "${checkPip}" = "200" ];then pip install ${pyMysql} else Setup_Mysql_PyDb ${pyMysql} ${pyMysqlVer} fi fi if [ "${checkPip}" = "200" ];then pip install PyMySQL else Setup_Mysql_PyDb "PyMySQL" "0.9.3" fi } Drop_Test_Databashes(){ sleep 1 /etc/init.d/mysqld stop pkill -9 mysqld_safe pkill -9 mysql sleep 1 /etc/init.d/mysqld start sleep 1 /www/server/mysql/bin/mysql -uroot -p$mysqlpwd -e "drop database test"; /www/server/mysql/bin/mysql -uroot -p$mysqlpwd -e "delete from mysql.user where user='';" /www/server/mysql/bin/mysql -uroot -p$mysqlpwd -e "flush privileges;" } #设置软件链 SetLink() { ln -sf ${Setup_Path}/bin/mysql /usr/bin/mysql ln -sf ${Setup_Path}/bin/mysqldump /usr/bin/mysqldump ln -sf ${Setup_Path}/bin/myisamchk /usr/bin/myisamchk ln -sf ${Setup_Path}/bin/mysqld_safe /usr/bin/mysqld_safe ln -sf ${Setup_Path}/bin/mysqlcheck /usr/bin/mysqlcheck ln -sf ${Setup_Path}/bin/mysql_config /usr/bin/mysql_config rm -f /usr/lib/libmysqlclient.so.16 rm -f /usr/lib64/libmysqlclient.so.16 rm -f /usr/lib/libmysqlclient.so.18 rm -f /usr/lib64/libmysqlclient.so.18 rm -f /usr/lib/libmysqlclient.so.20 rm -f /usr/lib64/libmysqlclient.so.20 rm -f /usr/lib/libmysqlclient.so.21 rm -f /usr/lib64/libmysqlclient.so.21 if [ -f "${Setup_Path}/lib/libmysqlclient.so.18" ];then ln -sf ${Setup_Path}/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.20 elif [ -f "${Setup_Path}/lib/mysql/libmysqlclient.so.18" ];then ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.20 elif [ -f "${Setup_Path}/lib/libmysqlclient.so.16" ];then ln -sf ${Setup_Path}/lib/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmysqlclient.so.16 /usr/lib64/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmysqlclient.so.16 /usr/lib64/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/libmysqlclient.so.16 /usr/lib64/libmysqlclient.so.20 elif [ -f "${Setup_Path}/lib/mysql/libmysqlclient.so.16" ];then ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.16 /usr/lib64/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.16 /usr/lib64/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.16 /usr/lib64/libmysqlclient.so.20 elif [ -f "${Setup_Path}/lib/libmysqlclient_r.so.16" ];then ln -sf ${Setup_Path}/lib/libmysqlclient_r.so.16 /usr/lib/libmysqlclient_r.so.16 ln -sf ${Setup_Path}/lib/libmysqlclient_r.so.16 /usr/lib64/libmysqlclient_r.so.16 elif [ -f "${Setup_Path}/lib/mysql/libmysqlclient_r.so.16" ];then ln -sf ${Setup_Path}/lib/mysql/libmysqlclient_r.so.16 /usr/lib/libmysqlclient_r.so.16 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient_r.so.16 /usr/lib64/libmysqlclient_r.so.16 elif [ -f "${Setup_Path}/lib/libmysqlclient.so.20" ];then ln -sf ${Setup_Path}/lib/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20 elif [ -f "${Setup_Path}/lib/libmysqlclient.so.21" ];then ln -sf ${Setup_Path}/lib/libmysqlclient.so.21 /usr/lib/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmysqlclient.so.21 /usr/lib64/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmysqlclient.so.21 /usr/lib/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmysqlclient.so.21 /usr/lib64/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmysqlclient.so.21 /usr/lib/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/libmysqlclient.so.21 /usr/lib64/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/libmysqlclient.so.21 /usr/lib/libmysqlclient.so.21 ln -sf ${Setup_Path}/lib/libmysqlclient.so.21 /usr/lib64/libmysqlclient.so.21 elif [ -f "${Setup_Path}/lib/libmariadb.so.3" ]; then ln -sf ${Setup_Path}/lib/libmariadb.so.3 /usr/lib/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmariadb.so.3 /usr/lib64/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/libmariadb.so.3 /usr/lib/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmariadb.so.3 /usr/lib64/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/libmariadb.so.3 /usr/lib/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/libmariadb.so.3 /usr/lib64/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/libmariadb.so.3 /usr/lib/libmysqlclient.so.21 ln -sf ${Setup_Path}/lib/libmariadb.so.3 /usr/lib64/libmysqlclient.so.21 elif [ -f "${Setup_Path}/lib/mysql/libmysqlclient.so.20" ];then ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.16 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.18 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20 ln -sf ${Setup_Path}/lib/mysql/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20 fi } My_Cnf(){ if [ "${version}" == "5.1" ]; then defaultEngine="MyISAM" else defaultEngine="InnoDB" fi cat > /etc/my.cnf<&1|tee /tmp/mysql_config.pl elif [ "${version}" == "5.5" ]; then gccVersionCheck cmake -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 ${i_make_args} 2>&1|tee /tmp/mysql_config.pl elif [ "${version}" == "5.6" ]; then cmake -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 ${WITH_SSL} ${i_make_args} 2>&1|tee /tmp/mysql_config.pl elif [ "${version}" == "5.7" ]; then mkdir install cd install cmake .. -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_BOOST=../boost ${WITH_SSL} ${i_make_args} ${GREATSQL_57_SET} 2>&1|tee /tmp/mysql_config.pl elif [ "${version}" == "8.0" ]; then mkdir install cd install cmakeV="cmake" if [ "${PM}" = "yum" ]; then if [ "${Centos7Check}" ];then yum install centos-release-scl-rh -y if [ -f "/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo" ];then sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo fi yum install devtoolset-8-gcc devtoolset-8-gcc-c++ -y yum install cmake3 -y cmakeV="cmake3" export CC=/opt/rh/devtoolset-8/root/usr/bin/gcc export CXX=/opt/rh/devtoolset-8/root/usr/bin/g++ else export CC=/usr/bin/gcc export CXX=/usr/bin/g++ fi fi ${cmakeV} .. -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DENABLED_LOCAL_INFILE=1 -DWITH_BOOST=../boost ${WITH_SSL} ${i_make_args} 2>&1|tee /tmp/mysql_config.pl elif [ "${version}" == "8.4" ]; then mkdir install cd install cmakeV="cmake" if [ "${PM}" = "yum" ]; then if [ "${Centos7Check}" ];then yum install centos-release-scl-rh -y if [ -f "/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo" ];then sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo fi yum install devtoolset-10-gcc devtoolset-10-gcc-c++ -y yum install cmake3 -y cmakeV="cmake3" export CC=/opt/rh/devtoolset-10/root/usr/bin/gcc export CXX=/opt/rh/devtoolset-10/root/usr/bin/g++ else export CC=/usr/bin/gcc export CXX=/usr/bin/g++ fi fi ${cmakeV} .. -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DENABLED_LOCAL_INFILE=1 ${GREATSQL_80_SET} ${WITH_SSL} ${i_make_args} 2>&1|tee /tmp/mysql_config.pl elif [ "${version}" == "9.0" ]; then mkdir install cd install cmakeV="cmake" if [ "${PM}" = "yum" ]; then if [ "${Centos7Check}" ];then yum install centos-release-scl-rh -y if [ -f "/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo" ];then sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo fi yum install devtoolset-10-gcc devtoolset-10-gcc-c++ -y yum install cmake3 -y cmakeV="cmake3" export CC=/opt/rh/devtoolset-10/root/usr/bin/gcc export CXX=/opt/rh/devtoolset-10/root/usr/bin/g++ else export CC=/usr/bin/gcc export CXX=/usr/bin/g++ fi fi ${cmakeV} .. -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DENABLED_LOCAL_INFILE=1 ${GREATSQL_80_SET} ${WITH_SSL} ${i_make_args} 2>&1|tee /tmp/mysql_config.pl elif [ "${version}" == "alisql" ]; then cmake -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=${Data_Path} -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 ${i_make_args} 2>&1|tee /tmp/mysql_config.pl elif [ "${version}" == "mariadb_10.0" ]; then cmake -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DWITH_ARIA_STORAGE_ENGINE=1 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 ${i_make_args} 2>&1|tee /tmp/mysql_config.pl elif [ "${version}" == "mariadb_10.6" ] || [ "${version}" == "mariadb_10.5" ]; then cmakeV="cmake" if [ "${PM}" = "yum" ]; then if [ "${Centos7Check}" ];then yum install centos-release-scl-rh -y if [ -f "/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo" ];then sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo fi yum install devtoolset-7-gcc devtoolset-7-gcc-c++ -y yum install cmake3 -y cmakeV="cmake3" export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc export CXX=/opt/rh/devtoolset-7/root/usr/bin/g++ else export CC=/usr/bin/gcc export CXX=/usr/bin/g++ fi ${cmakeV} -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DWITH_ARIA_STORAGE_ENGINE=1 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITHOUT_TOKUDB=1 ${i_make_args} 2>&1|tee /tmp/mysql_config.pl else cmake -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DWITH_ARIA_STORAGE_ENGINE=1 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITHOUT_TOKUDB=1 ${i_make_args} 2>&1|tee /tmp/mysql_config.pl fi elif [ "${version}" == "mariadb_10.7" ] || [ "${version}" == "mariadb_10.8" ] || [ "${version}" == "mariadb_10.11" ] || [ "${version}" == "mariadb_11.3" ]; then cmakeV="cmake" if [ "${PM}" = "yum" ]; then if [ "${Centos7Check}" ];then yum install centos-release-scl-rh -y yum install devtoolset-7-gcc devtoolset-7-gcc-c++ -y yum install cmake3 -y cmakeV="cmake3" export CC=/usr/bin/gcc export CXX=/usr/bin/g++ fi ${cmakeV} -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DWITH_ARIA_STORAGE_ENGINE=1 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITHOUT_TOKUDB=1 ${i_make_args} 2>&1|tee /tmp/mysql_config.pl else cmake -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DWITH_ARIA_STORAGE_ENGINE=1 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITHOUT_TOKUDB=1 ${i_make_args} 2>&1|tee /tmp/mysql_config.pl fi else cmake -DCMAKE_INSTALL_PREFIX=${Setup_Path} -DWITH_ARIA_STORAGE_ENGINE=1 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITHOUT_TOKUDB=1 ${i_make_args} 2>&1|tee /tmp/mysql_config.pl fi set -o pipefail make -j${cpuCore} 2>&1|tee /tmp/mysql_make.pl if [ $? -ne 0 ];then echo '========================================================' GetSysInfo WSL_CHECK=$(uname -a|grep WSL) echo -e "ERROR: mysql ${version} installation failed."; if [ "${WSL_CHECK}" ];then echo "检测为windows wsl系统进行安装,未对此环境进行兼容测试" echo "建议使用虚拟机安装ubuntu-22使用或使用云服务器安装宝塔面板" fi CC_KILL_CHECK=$(cat /tmp/mysql_make.pl |grep "Killed") if [ "${CC_KILL_CHECK}" ];then echo "检测到编译进程被杀死,一般由以下原因造成" echo "1.服务器内存不足,建议增加服务器内存/更换低版本mysql/使用极速方式安装" echo "2.开启了安全防护软件导致进程被kill,请关闭安全防护软件后再进行安装" exit 1 fi if [ -z "${SYS_VERSION}" ];then echo -e "============================================" echo -e "检测到为非常用系统安装,请尝试安装其他Mysql版本看是否正常" echo -e "如无法正常安装,建议更换至Centos-7或Debian-10+或Ubuntu-20+系统安装宝塔面板" echo -e "详情请查看系统兼容表:https://docs.qq.com/sheet/DUm54VUtyTVNlc21H?tab=BB08J2" echo -e "特殊情况可通过以下联系方式寻求安装协助情况" echo -e "============================================" fi echo -e "安装失败,请截图以上报错信息发帖至论坛www.bt.cn/bbs求助" echo -e "============================================" if [ "${version}" == "mariadb_10.0" ] || [ "${version}" == "mariadb_10.1" ] || [ "${version}" == "mariadb_10.2" ] || [ "${version}" == "mariadb_10.3" ] || [ "${version}" == "mariadb_10.7" ] || [ "${version}" == "mariadb_10.8" ];then echo -e "${version}安装失败 此版本mariadb官方已经不再维护" echo -e "建议选择mariadb-10.4/10.5/10.6/10.11进行安装" echo -e "============================================" exit 1; fi WSL_CHECK=$(uname -a|grep Microsoft) if [ "${WSL_CHECK}" ];then echo -e "宝塔未兼容测试过Microsoft WSL子系统进行安装" echo -e "建议使用虚拟机安装ubuntu-22安装宝塔面板" exit 1 fi VELINUX_CHECK=$(uname -a|grep velinux1) if [ "$VELINUX_CHECK" ];then echo -e "宝塔未兼容测试过velinux系统进行安装" echo -e "建议更换至Centos-7或Debian-10+或Ubuntu-20+系统安装宝塔面板板" exit 1 fi rockchip64_CHECK=$(uname -a|grep rockchip64) if [ "$VELINUX_CHECK" ];then echo -e "宝塔未兼容测试过rockchip64系统进行安装" echo -e "建议更换至Centos-7或Debian-10+或Ubuntu-20+服务器系统安装宝塔面板板" exit 1 fi KALI_CHECK=$(uname -a|grep Kali) if [ "${WSL_CHECK}" ];then echo -e "宝塔未兼容测试过Kali系统进行安装" echo -e "建议更换至Centos-7或Debian-10+或Ubuntu-20+系统安装宝塔面板板" exit 1 fi ARMBIAN_CHECK=$(uname -a|grep Armbian) if [ "${ARMBIAN_CHECK}" ];then echo -e "宝塔未详细兼容测试过Armbian系统进行安装" echo -e "建议更换至Centos-7或Debian-10+或Ubuntu-20+系统安装宝塔面板板" exit 1 fi RJ3328_CHECK=$(uname -a|grep rk3328) if [ "${RJ3328_CHECK}" ];then echo -e "宝塔未兼容测试过电视盒子进行安装" echo -e "建议更换至Centos-7或Debian-10+或Ubuntu-20+系统安装宝塔面板板" exit 1 fi XIAOMI_CHECK=$(uname -a|grep xiaomi) if [ "${XIAOMI_CHECK}" ];then echo -e "宝塔未兼容测试过安卓手机进行安装" echo -e "建议更换至Centos-7或Debian-10+或Ubuntu-20+服务器系统安装宝塔面板板" exit 1 fi KY_10_CHECK=$(uname -a|grep ky10) if [ "${KY_10_CHECK}" ];then exit 1 fi if [ -f "/etc/redhat-release" ];then LINUX_KIT_CHECK=$(uname -a|grep linuxkit) if [ "${LINUX_KIT_CHECK}" ];then echo -e "宝塔未兼容测试过linuxkit(docker)环境下进行安装" echo -e "建议更换至服务器系统Centos-7或Debian-10+或Ubuntu-20+系统安装宝塔面板板" exit 1 fi BBR_CHECK=$(uname -a|grep bbrplus) if [ "${BBR_CHECK}" ];then echo -e "检测已使用bbr更新过内核,建议更新完内核在安装宝塔面板然后再安装软件" echo -e "或如需高版本内核,可使用Ubuntu-22/Debian-12进行安装宝塔面板" exit 1 fi ELREPO_CHECK=$(uname -a|grep elrepo) if [ "${ELREPO_CHECK}" ];then echo -e "检测更新过内核,建议更新完内核在安装宝塔面板然后再安装软件" echo -e "或如需高版本内核,可使用Ubuntu-22/Debian-12进行安装宝塔面板" exit 1 fi fi if [ "${PM}" == "apt-get" ];then UBUNTU_23_CHECK=$(cat /etc/issue|grep Ubuntu|grep 23) if [ "${UBUNTU_23_CHECK}" ];then echo -e "宝塔未兼容测试过Ubuntu-23(预览版)环境下进行安装" echo -e "建议更换至服务器系统Centos-7或Debian-12或Ubuntu-22系统安装宝塔面板板" exit 1 fi POP_CHECK=$(cat /etc/issue|grep Pop) if [ "${POP_CHECK}" ];then echo -e "宝塔未兼容测试过Pop!_OS 环境下进行安装" echo -e "建议更换至服务器系统Centos-7或Debian-12或Ubuntu-22系统安装宝塔面板板" exit 1 fi fi # Error_Send exit 1; fi set -o pipefail } Install_Mysql(){ if [ "${actionType}" == "update" ]; then /etc/init.d/mysqld stop sleep 2 make install sleep 2 /etc/init.d/mysqld start printVersion rm -f ${Setup_Path}/version_check.pl rm -f ${Setup_Path}/src.tar.gz rm -rf ${Setup_Path}/src exit 0; fi make install [ "${version}" == "8.0" ] || [ "${version}" == "mariadb_10.2" ] || [ "${version}" == "mariadb_10.3" ] || [ "${version}" == "mariadb_10.4" ]&& echo "True" > ${Setup_Path}/mysqlDb3.pl } Mysql_Initialize(){ if [ -d "${Data_Path}" ]; then rm -rf ${Data_Path}/* else mkdir -p ${Data_Path} fi chown -R mysql:mysql ${Data_Path} chgrp -R mysql ${Setup_Path}/. if [ "${version}" == "mariadb_10.4" ] || [ "${version}" == "mariadb_10.5" ]; then mkdir -p ${Setup_Path}/lib/plugin/auth_pam_tool_dir/auth_pam_tool_dir wget -O ${Setup_Path}/scripts/mysql_install_db ${download_Url}/tools/mysql_install_db Authentication_Method="--auth-root-authentication-method=normal" fi if [ "${version}" == "mariadb_10.6" ] || [ "${version}" == "mariadb_10.7" ] || [ "${version}" == "mariadb_10.11" ] || [ "${version}" == "mariadb_11.3" ]; then mkdir -p ${Setup_Path}/lib/plugin/auth_pam_tool_dir/auth_pam_tool_dir Authentication_Method="--auth-root-authentication-method=normal" if [ -d "/etc/mysql" ];then mv /etc/mysql /etc/mysql.bak fi fi if [ -d "/etc/mysql" ];then mv /etc/mysql /etc/mysql.bak fi if [ "${version}" == "5.1" ]; then ${Setup_Path}/bin/mysql_install_db --defaults-file=/etc/my.cnf --basedir=${Setup_Path} --datadir=${Data_Path} --user=mysql elif [ "${version}" == "5.7" ] || [ "${version}" == "8.0" ] || [ "${version}" == "8.4" ] || [ "${version}" == "9.0" ];then ${Setup_Path}/bin/mysqld --initialize-insecure --basedir=${Setup_Path} --datadir=${Data_Path} --user=mysql else ${Setup_Path}/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=${Setup_Path} --datadir=${Data_Path} --user=mysql ${Authentication_Method} fi rm -f /etc/init.d/mysqld \cp support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld if [[ "${version}" != "5.7" && "${version}" != "8.0" && "${version}" != "8.4" && "${version}" != "9.0" ]]; then sed -i "s#\"\$\*\"#--sql-mode=\"NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"#" /etc/init.d/mysqld fi sed -i 's/$bindir\/mysqld_safe /&--defaults-file="\/etc\/my.cnf" /' /etc/init.d/mysqld sed -i '/case "$mode" in/i\ulimit -s unlimited' /etc/init.d/mysqld cat > /etc/ld.so.conf.d/mysql.conf<