1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| #!/bin/bash # Author: Ropon # Blog: https://www.ropon.top RunUser=mysql
InstallMysql() { pushd $BaseDir [ "${MysqlVer}" == "5.7.25" ] && MysqlModulesOptions="-DWITH_BOOST=boost" #if [ "${MysqlVer}" == "8.0.14" ]; then #[ ! -f ${MysqlFiles[boost]}.tar.gz ] && Download ${MirrorLink}/${MysqlFiles[boost]}.tar.gz #[ ! -d ${MysqlFiles[boost]} ] && tar xzf ${MysqlFiles[boost]}.tar.gz #MysqlModulesOptions="-DWITH_BOOST==../${MysqlFiles[boost]}" #fi
# 批量检测并创建所需目录 for key in ${!MysqlDirs[*]};do [ ! -d "${MysqlDirs[$key]}" ] && mkdir -p ${MysqlDirs[$key]} done
id -u $RunUser >/dev/null 2>&1 [ $? -ne 0 ] && useradd -M -s /sbin/nologin $RunUser
which cmake >/dev/null 2>&1 if [ $? -ne 0 ]; then [ ! -f ${MysqlFiles[cmake]}.tar.gz ] && Download ${MirrorLink}/${MysqlFiles[cmake]}.tar.gz [ ! -d ${MysqlFiles[cmake]} ] && tar xzf ${MysqlFiles[cmake]}.tar.gz pushd ${MysqlFiles[cmake]} ./configure make -j${Thread} && make install popd fi [ ! -f ${MysqlFiles[mysql]}.tar.gz ] && Download ${MirrorLink}/${MysqlFiles[mysql]}.tar.gz [ ! -d ${MysqlFiles[mysql]} ] && tar xzf ${MysqlFiles[mysql]}.tar.gz pushd ${MysqlFiles[mysql]} cmake . -DCMAKE_INSTALL_PREFIX=${MysqlDirs[MysqlInstallDir]} -DMYSQL_DATADIR=${MysqlDirs[MysqlDataDir]} -DSYSCONFDIR=/etc/mysql${MysqlFlag} $MysqlModulesOptions make -j${Thread} && make install
if [ -d "${MysqlDirs[MysqlInstallDir]}/support-MysqlFiles" ]; then # 批量清理下载文件及解压后文件夹 popd for key in ${!MysqlFiles[*]};do rm -rf ${MysqlFiles[$key]}.tar.gz ${MysqlFiles[$key]} done Echo "success" "${MysqlFiles[mysql]}安装成功" else rm -rf ${MysqlDirs[MysqlInstallDir]} Echo "failure" "${MysqlFiles[mysql]}安装失败" && exit fi
/bin/cp ${MysqlDirs[MysqlInstallDir]}/support-MysqlFiles/mysql.server /etc/init.d/mysqld sed -i "s@^basedir=.*@basedir=${MysqlDirs[MysqlInstallDir]}@" /etc/init.d/mysqld sed -i "s@^datadir=.*@datadir=${MysqlDirs[MysqlDataDir]}@" /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld && chkconfig mysqld on mv /etc/my.cnf{,_bk} wget -O /etc/my.cnf http://panel.ropon.top/panel/lnmp/config/my.txt sed -i "s@/usr/local/mysql@${MysqlDirs[MysqlInstallDir]}@" /etc/my.cnf sed -i "s@/home/mysql@${MysqlDirs[MysqlDataDir]}@" /etc/my.cnf
[ "${MysqlVer}" == "5.5.62" ] && { temp="#explicit_defaults_for_timestamp" ; sed -i "s@explicit_defaults_for_timestamp@$temp@" /etc/my.cnf; } [ "${MysqlVer}" == "5.7.25" ] && MysqlInstallsSripts="${MysqlDirs[MysqlInstallDir]}/bin/mysqld --initialize-insecure" MysqlInstallsSripts="${MysqlDirs[MysqlInstallDir]}/scripts/mysql_install_db" #因mysql初始化命令不同,判断mysql版本是否5.7 $MysqlInstallsSripts --user=$RunUser --basedir=${MysqlDirs[MysqlInstallDir]} --datadir=${MysqlDirs[MysqlDataDir]} #初始化mysql数据 chown $RunUser.$RunUser -R ${MysqlDirs[MysqlDataDir]} service mysqld start
# 判断加path [ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=${MysqlDirs[MysqlInstallDir]}/bin:\$PATH" >> /etc/profile [ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep ${MysqlDirs[MysqlInstallDir]} /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${MysqlDirs[MysqlInstallDir]}/bin:\1@" /etc/profile sleep 1 . /etc/profile
${MysqlDirs[MysqlInstallDir]}/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"${RootPassword}\" with grant option;" #修改root密码 ${MysqlDirs[MysqlInstallDir]}/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"${RootPassword}\" with grant option;" #修改root密码 ${MysqlDirs[MysqlInstallDir]}/bin/mysql -uroot -p${RootPassword} -e "delete from mysql.user where Password='';" #清理空密码 ${MysqlDirs[MysqlInstallDir]}/bin/mysql -uroot -p${RootPassword} -e "delete from mysql.db where User='';" #清理空账号 ${MysqlDirs[MysqlInstallDir]}/bin/mysql -uroot -p${RootPassword} -e "delete from mysql.proxies_priv where Host!='localhost';" #清理非本地用户权限 ${MysqlDirs[MysqlInstallDir]}/bin/mysql -uroot -p${RootPassword} -e "drop database test;" #删除test数据库 ${MysqlDirs[MysqlInstallDir]}/bin/mysql -uroot -p${RootPassword} -e "reset master;" #清理所有二进制日志并重新生成
rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona,alisql}*.conf [ -e "${MysqlDirs[MysqlInstallDir]}/my.cnf" ] && rm -rf ${MysqlDirs[MysqlInstallDir]}/my.cnf echo "${MysqlDirs[MysqlInstallDir]}/lib" > /etc/ld.so.conf.d/mysql.conf #初始化mysql动态函数库 ldconfig #刷新动态函数库 service mysqld restart Echo "msg" "Mysql${MysqlFlag}的root密码是: ${RootPassword},保存到/root/mysql_root.txt文件中" echo Mysql${MysqlFlag}的root密码是: ${RootPassword} > /root/mysql${MysqlFlag}_root.txt popd }
Mysql() { if [ -z $MysqlVer ]; then Echo "msg" "跳过安装Mysql" else Echo "msg" "正在安装Mysql" yum install -y gcc-c++ perl ncurses ncurses-devel libaio numactl numactl-libs perl-Module-Install.noarch InstallMysql fi }
|