1 #!/bin/bash2 #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.conf11 #安装包所在目录,为脚本当前目录的rpms下12 mysql_rpm_dir=${curr_path}/rpms13 #读取配置文件,获得用户自定义的mysql密码,如果用户未指定,默认密码为root14 user_mysql_passwd=`sed -e '/^[ ]*define_passwd[ ]*=/!d;s/.*=[ ]*//'${conf_file}`15 mysql_passwd=${user_mysql_passwd:-root}16
17
18 #定义卸载已有mysql的函数19 functionuninstallOldMysql {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 functiongetInitPasswd() {33 for line in `cat /root/.mysql_secret`34 do
35 word=$line36 done
37 echo${word}38 }39
40
41 #判断mysql是否正在运行,如果正在运行,则返回1,否则返回042 functionjudgeMysqlRunning() {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 #停止正在运行的mysql53 functionstopRunningMysql() {54 service mysql stop55 }56
57 echo `date "+%Y-%m-%d %T"` "******安装mysql......"
58
59 #第一步:停止并卸载原有的mysql60 echo `date "+%Y-%m-%d %T"` "---->>停止彻底卸载已有的mysql......"
61 #如果mysql正在运行,停止mysql62 judgeMysqlRunning63 if [ $? -eq 0 ]; then
64 stopRunningMysql65 fi
66 #卸载mysql67 uninstallOldMysql68 #删除mysql配置文件69 rm -rf /root/.mysql_secret70 rm -rf /usr/my.cnf71 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 #安装后启动mysql86 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 exit93 EOF94 sleep 2
95 echo `date "+%Y-%m-%d %T"` "---->>新密码设置完毕"
96
97
98 #第四步:授权设置,开启远程访问99 echo `date "+%Y-%m-%d %T"` "---->>授权设置......"
100 #使用新密码登录mysql101 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 exit107 EOF108 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 =InnoDB118 lower_case_table_names = 1
119 max-connections=3000
120 character_set_server=utf8121 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES122 [mysql]123 default-character-set=utf8124 EOF125 #设置开机自启,并重启mysql126 chkconfig mysql on127 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}"