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,运行结果如下: