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,運行結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM