#!/bin/bash# 一键装置mysql5.7.35#安装包下载目录MYSQL_DOWNLOAD_DIR=/data/software/#数据包目录MYSQL_INSTALL_DIR=/data/modules/#数据库信息info_mysql(){ echo "======> MYSQL装置信息 <======"; echo "Mysql版本:5.7.35 "; echo "下载目录:/data/software/ "; echo "装置目录:/data/modules/ ";}#旧版mysqluninstall_mysql(){ echo "\n======> MYSQL装置筹备 <======"; echo "残留Mysql检测......." echo "卸载旧版mysql......." echo [+] Uninstall Mysql yum remove mysql* -y yum remove mariadb* -y if [ -f "/etc/my.cnf" ];then rm -rf /etc/my.cnf fi if [ -f "/root/.mysql_sercret" ];then rm -rf /root/.mysql_sercret fi if [ -d "/var/lib/mysql" ];then rm -rf /var/lib/mysql fi if [ -d "/usr/lib64/mysql" ];then rm -rf /usr/lib64/mysql fi if [ -d "/usr/share/mysql" ];then rm -rf /usr/share/mysql fi echo "卸载实现!"} #下载mysqlIS_CINTINUE='y';download_mysql(){ echo "装置目录检测......." if [ ! -d "/data/software" ]; then echo "创立下载目录......." mkdir -p /data/software/ fi if [ ! -d "/data/modules/mysql/" ]; then echo "创立数据目录......." mkdir -p /data/modules/ fi echo " 目录准备就绪 !"; echo "======> MYSQL装置过程 <======"; cd /data/software/ read -p " 确认是否装置?【y/n】" IS_CINTINUE if [[ $IS_CINTINUE == 'y' ]]; then echo "请稍等,大概须要20分钟,正在下载MYSQL......."; cd /data/software/ file="/data/software/mysql-boost-5.7.35.tar.gz" if [ ! -f $file ]; then echo "File not found!" yum install -y wget && wget -c https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.35.tar.gz; echo "下载实现,正在解压......."; tar -zxvf mysql-boost-5.7.35.tar.gz -C /data/modules/ cd /data/modules/ mv /data/modules/mysql-5.7.35/ mysql exit 0 fi echo "解压实现,执行装置......."; #yum install -y wget && wget -c https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35-el7-x86_64.tar.gz; else echo "请您自行下载安装包!"; exit; fi}#装置mysqlinstall_mysql(){ echo "======> 装置mysql依赖....... <======"; yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automake* zlib* libxmlncurses-devel ncurses libgcrypt libtool* cmake openssl openssl-devel bisonbison-devel perl-Data-Dumper boost boost-doc boost-devel yum -y install gcc make cmake ncurses-devel libxml2-devel libtool-ltdl-devel gcc-c++ autoconf automake bison zlib-devel echo "======> 装置前的设置 <======"; sleep 2s cd /data/modules/mysql/ mkdir data sleep 2s cmake -DCMAKE_INSTALL_PREFIX=/data/modules/mysql/ \ -DMYSQL_DATADIR=/data/modules/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ -DMYSQL_TCP_PORT=3306 \ -DWITH_BOOST=/data/modules/mysql/boost \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci echo "======> 创立mysql用户和组 <======"; cd /data/modules/mysql/ sleep 2s make && make install groupadd mysql && useradd mysql -g mysql -M -s /sbin/nologin && chown mysql:mysql /data/modules/mysql/ # if [ $? -eq 0 ];then # echo "======> 设置胜利!开始编译装置,大概须要20分钟,急躁期待...<======"; # sleep 2s # make && make install # if [ $? -eq 0 ]; then # cd ~ # echo "======> 编译胜利!开始设置组和用户! <======"; # sleep 2s # groupadd mysql && useradd mysql -g mysql -M -s /sbin/nologin && chown mysql:mysql /data/modules/mysql/ # else # echo "======> 编译失败! <======"; # exit; # fi # else # echo "======> 设置失败! <======"; # exit; # fi echo "======> 装置实现! <======";}#配置Mysqlconfiguration_mysql(){echo "======> 配置mysql <======";cd /data/modules/mysql/touch mysql.pidecho "10254" > /data/modules/mysql/mysql.pidtouch mysql.errtouch mysqld.sockchown mysql:mysql /data/modules/mysql/mysql.pidchown mysql:mysql /data/modules/mysql/mysql.errchown mysql:mysql /data/modules/mysql/data/mysqld.sockcat > /etc/my.cnf<<EOF[client]port = 3306socket = /data/modules/mysql/data/mysqld.sock[mysqld]#server-id = 6878 #运行IDbind-address=0.0.0.0 #绑定地址运行近程连贯port=3306 #Mysql凋谢的端口user=mysql #数据库登录用户basedir=/data/modules/mysql/ #Mysql装置的绝对路径datadir=/data/modules/mysql/data #Mysql数据寄存的绝对路径socket=/data/modules/mysql/data/mysqld.sock #套接字文件log-error=/data/modules/mysql/mysql.err #mysql生成的谬误日志寄存的门路pid-file=/data/modules/mysql/mysql.pid #为mysqld程序指定一个寄存过程ID的文件character_set_server=utf8 #数据库字符编码symbolic-links=0 #是否开启链接符号explicit_defaults_for_timestamp=true #数据库timestamp类型的列自动更新 EOFsleep 2secho "初始化mysql.......";cd /data/modules/mysql/bin./mysqld --defaults-file=/etc/my.cnf --basedir=/data/modules/mysql/ --datadir=/data/modules/mysql/data/ --user=mysql --initializeln -s /data/modules/mysql/bin/mysql /usr/bin}#将mysql设置成为服务启动service_mysql(){ echo "======> 制作服务启动 <======"; cd /data/modules/mysql /bin/cp -rf support-files/mysql.server /etc/init.d/mysqld chmod a+wrx /etc/init.d/mysqld if [ $? -eq 0 ]; then echo "======> 服务设置胜利! <======"; cd ~ service mysqld start sleep 2s service mysqld stop sleep 2s else echo "======> 服务设置失败! <======"; fi echo "======> 增加到开机启动项! <======"; chkconfig --add mysqld if [ $? -eq 0 ]; then echo "======> 设置开机启动项胜利! <======"; else echo "======> 设置开机启动项失败! <======"; fi service mysqld stop echo "======> 配置环境变量 <======"; echo "export PATH=$PATH:/data/modules/mysql/bin/" >>/etc/profile source /etc/profile echo "启动mysql服务....... "; service mysqld start echo "Mysql曾经启动....... ";}#启动数据库设置明码# mysql_password='123456'# up_mysql(){# cd /data/modules/mysql/# echo "======> 请输出数据库明码: <======";# read -p "输出明码:" -s mysql_password echo# echo password read, is "$mysql_password"# # read -p " 确认是否装置?【y/n】" IS_CINTINUE# # ./bin/mysqladmin -u root password "123456"# if [ $? -eq 0 ];then# echo "设置root明码胜利!";# else# echo "设置root明码失败!";# fi# source /etc/profile# }#完结装置end_mysql(){ echo "运行端口: 3306" echo "数据库用户: mysql" echo "数据库root明码(root@localhost前面):" cat /data/modules/mysql/mysql.err | grep root@localhost: echo "数据库装置门路: /data/modules/mysql/ " echo "数据库数据门路: /data/modules/mysql/data " mysql -uroot -p}#装置流程mysql(){ #数据库信息 info_mysql #旧版数据库卸载 uninstall_mysql #下载数据库 download_mysql #装置数据库 install_mysql #配置数据库 configuration_mysql #数据库以服务启动 service_mysql #启动MySQL设置明码 #显示数据库信息 info_mysql end_mysql}mysql