mysql5.6rpm包shell脚本安装

1、准备工作

创建目录,在该目录下存放mysql的rpm包,并编辑安装脚本和配置文件,目录结构如下:

其中rpms目录存放MySQL-client和MySQL-server的rpm包,install.conf为配置文件,用户可以在其中自定义mysql的密码,install.sh为shell脚本。

配置文件install.conf的内容如下:

#用户自定义mysql密码,如果不指定,默认密码为root
define_passwd=123456

2、编辑shell脚本

mysql安装脚本的内容如下:

  1 #!/bin/bash
  2 #desc: mysql5.6的一键安装脚本
  3 #安装说明: 将整个目录上传到服务器任意目录下,修改配置文件中MySQL密码后,直接执行可。
  4 #测试环境: 该脚本在虚拟机上的centOS6.8下测试可行,Linux系统为标准桌面安装
  5 
  6 ###预定义变量
  7 #获得当前脚本所在目录
  8 curr_path=$(cd `dirname $0`; pwd)
  9 #获得配置文件
 10 conf_file=${curr_path}/install.conf
 11 #安装包所在目录,为脚本当前目录的rpms下
 12 mysql_rpm_dir=${curr_path}/rpms
 13 #读取配置文件,获得用户自定义的mysql密码,如果用户未指定,默认密码为root
 14 user_mysql_passwd=`sed -e '/^[ ]*define_passwd[ ]*=/!d;s/.*=[ ]*//' ${conf_file}`
 15 mysql_passwd=${user_mysql_passwd:-root}
 16 
 17 
 18 #定义卸载已有mysql的函数
 19 function uninstallOldMysql {
 20     for item in `rpm -qa | grep -i mysql`
 21     do
 22         rpm -e --nodeps ${item}
 23     done
 24     for item in `find / -name mysql`
 25     do
 26         rm -rf ${item}
 27     done
 28 }
 29 
 30 
 31 #读取文件/root/.mysql_secret,获得mysql的初始密码
 32 function getInitPasswd() {
 33     for line in `cat /root/.mysql_secret`
 34     do
 35         word=$line
 36     done
 37     echo ${word}
 38 }
 39 
 40 
 41 #判断mysql是否正在运行,如果正在运行,则返回1,否则返回0
 42 function judgeMysqlRunning() {
 43     port=`netstat -nlt | grep 3306 | wc -l`
 44     if [ $port -eq 1 ]; then
 45         return 0
 46     else
 47         return 1
 48     fi
 49 }
 50 
 51 
 52 #停止正在运行的mysql
 53 function stopRunningMysql() {
 54     service mysql stop
 55 }
 56 
 57 echo `date "+%Y-%m-%d %T"`    "******安装mysql......"
 58 
 59 #第一步:停止并卸载原有的mysql
 60 echo `date "+%Y-%m-%d %T"`    "---->>停止彻底卸载已有的mysql......"
 61 #如果mysql正在运行,停止mysql
 62 judgeMysqlRunning
 63 if [ $? -eq 0 ]; then
 64     stopRunningMysql
 65 fi
 66 #卸载mysql
 67 uninstallOldMysql
 68 #删除mysql配置文件
 69 rm -rf /root/.mysql_secret
 70 rm -rf /usr/my.cnf
 71 sleep 2
 72 echo `date "+%Y-%m-%d %T"`    "---->>删除mysql执行完毕"
 73 
 74 
 75 #第二步:安装rpm安装包
 76 echo `date "+%Y-%m-%d %T"`    "---->>安装mysql-client......"
 77 rpm -ivh ${mysql_rpm_dir}/MySQL-client-5.6.35-1.el6.x86_64.rpm 1>/dev/null 2>&1; sleep 2
 78 echo `date "+%Y-%m-%d %T"`    "---->>安装mysql-server......"
 79 rpm -ivh ${mysql_rpm_dir}/MySQL-server-5.6.35-1.el6.x86_64.rpm 1>/dev/null 2>&1; sleep 2
 80 echo `date "+%Y-%m-%d %T"`    "---->>mysql rpm包安装完毕"
 81 
 82 
 83 #第三步:初始化mysql,设置新密码
 84 echo `date "+%Y-%m-%d %T"`    "---->>新密码设置......"
 85 #安装后启动mysql
 86 service mysql start 1>/dev/null 2>&1; sleep 2
 87 #获取mysql初始密码
 88 init_passwd=`getInitPasswd`
 89 #使用初始密码登录mysql,并设置新密码
 90 mysql --connect-expired-password -uroot -p${init_passwd} << EOF 1>/dev/null 2>&1; sleep 2
 91 set PASSWORD=PASSWORD('${mysql_passwd}');
 92 exit
 93 EOF
 94 sleep 2
 95 echo `date "+%Y-%m-%d %T"`    "---->>新密码设置完毕"
 96 
 97 
 98 #第四步:授权设置,开启远程访问
 99 echo `date "+%Y-%m-%d %T"`    "---->>授权设置......"
100 #使用新密码登录mysql
101 mysql -uroot -p${mysql_passwd} << EOF 1>/dev/null 2>&1; sleep 2
102 use mysql;
103 update user set password=password('${mysql_passwd}') where user='root';
104 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '${mysql_passwd}' WITH GRANT OPTION;
105 flush privileges;
106 exit
107 EOF
108 sleep 2
109 echo `date "+%Y-%m-%d %T"`    "---->>授权执行完毕"
110 
111 
112 #第五步:设置开机自启,并优化mysql配置
113 echo `date "+%Y-%m-%d %T"`    "---->>配置优化并重启mysql......"
114 cat > /usr/my.cnf << EOF 1>/dev/null 2>&1; sleep 2
115 [mysqld]
116 port = 3306
117 default-storage-engine = InnoDB 
118 lower_case_table_names = 1 
119 max-connections=3000
120 character_set_server=utf8
121 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
122 [mysql] 
123 default-character-set=utf8
124 EOF
125 #设置开机自启,并重启mysql
126 chkconfig mysql on
127 service mysql restart 1>/dev/null 2>&1
128 sleep 2
129 echo `date "+%Y-%m-%d %T"`    "---->>配置优化、开机自启设置完毕"
130 echo `date "+%Y-%m-%d %T"`    "******mysql安装完毕,登录密码为${mysql_passwd}"

3、运行测试

将整个目录上传到服务器任意目录下(注意:如果配置文件和脚本文件是在window环境下编辑的,需要将其格式转换为UNIX格式,否在Linux系统下不被识别),进入该目录下,在配置文件中指定mysql密码,最后执行命令bash install.sh,运行结果如下:

posted @ 2018-04-21 16:18  simple-clean-opt  Views(1421)  Comments(0Edit  收藏  举报