电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL自動安裝腳本代碼實例分享

瀏覽:4日期:2023-07-12 19:49:57
目錄

這里分享一個我寫的MySQL自動安裝腳本mysql_auto_install.sh,它的功能非常簡單,就是自動化安裝MySQL單實例,讓DBA的工作更簡單、輕松一些,不用去手工安裝MySQL實例。從簡單重復的工作中釋放出來。

下面是關于mysql_auto_install.sh腳本的一些說明:

1:這個腳本運行在mysql用戶下(注意,root用戶下運行會報錯,需要修改部分地方),主要原因是因為DBA沒有root賬號權限,只有mysql用戶的權限。另外,我也寫了一個mysql_auto_install_root.sh腳本,這個腳本是在root用戶下面運行,功能更多一些。暫時還在測試當中。

2:此腳本運行在mysql用戶下,因為權限問題,不會禁用透明大頁,卸載RPM包,調整內核參數、配置systemctl服務等操作,這些工作交給系統管理員處理。而且我們也假設這些都已經是設定好了的。

3:此腳本只適用于Linux,不適用HP-UX等操作系統。

4:my.cnf的模板中的參數要跟腳本中的參數一致。否則可能有問題。另外模板中參數設置請自己保證正確性與合理性。

5:腳本經過多次測試驗證,但是并不保證各種場景都沒有bug。發現問題,歡迎反饋,我自己也在不斷完善、改進這個腳本。

6: 安裝前,要準備好MySQL安裝介質、mysql_auto_install.sh、alter_root_passwd.sql,my.cnf的模板(這里命名為mysql8_template.cnf)

其中alter_root_passwd.sql是修改root密碼的腳本,如下所示,根據實際情況輸入密碼,安裝完成后,刪除此腳本。

ALTER?USER?'root'@'localhost'?IDENTIFIED?BY?'********';flush?privileges;

mysql_auto_install.sh腳本的詳情如下(格式可能因為代碼插件展示問題,有所混亂,請自行調整。原始腳本格式不會有下面亂七八糟的縮進或不對齊問題)

#!/bin/bash##########################################################################################???????????????????????????????????????????????????????????????????????????????????????##?This?script?is?used?for?auto?install?mysql?8.0.xx?????????????????????????????????????##???????????????????????????????????????????????????????????????????????????????????????###########################################################################################???????????????????????????????????????????????????????????????????????????????????????##?ScriptName????????????:????mysql_auto_install.sh??????????????????????????????????????##?Author????????????????:????瀟湘隱者???????????????????????????????????????????????????##?CreateDate????????????:????2019-09-06?????????????????????????????????????????????????##?Blogs?????????????????:????www.cnblogs.com/kerrycode??????????????????????????????????##?Email?????????????????:????kerry2008code@qq.com???????????????????????????????????????##***************************************************************************************##?參數配置??????????????????????????????????????????????????????????????????????????????##---------------------------------------------------------------------------------------##?MYSQL_BASE_DIR????????/opt/mysql??????????????????????????????????????????????????????##?MYSQL_DATA_DIR????????/data/mysql?????????????????????????????????????????????????????##?MYSQL_PORT????????????3306????????????????????????????????????????????????????????????##?LOG_OUT_TYPE??????????log?????????????????????????????????????????????????????????????##---------------------------------------------------------------------------------------##?注意事項:????????????????????????????????????????????????????????????????????????????##???1:如果維護的MySQL數據庫都規范化安裝、配置的化,下面很多參數都不需要修改????????????##???2:my.cnf模板很重要,如果配置有問題,可能導致安裝失敗。腳本里面有些參數設定都是依賴?##???????my.cnf模板中的設置,請確保你的my.cnf模板中設定跟腳本參數一致????????????????????##???3:此腳本在mysql用戶下安裝,很多操作受限,例如禁用透明大頁、卸載rpm包,調整內核參數?##??????如需處理這些?建議使用另外一個版本的腳本處理。此處設定系統管理員已經處理好這些事情##??????**注意**:此腳本只能在mysql用戶下運行,root用戶下需要修改部分地方才能成功????????##---------------------------------------------------------------------------------------##***************************************************************************************##?Version????????Modified?Date????????????Description???????????????????????????????????##***************************************************************************************##?V.1.0??????????2019-09-06??????????????創建此腳本?????????????????????????????????????##?V.1.1??????????2019-10-26??????????????按SHELL編程規范,重新命名規范各類對象??????????##?V.2.0??????????2023-06-16??????????????重新改寫該腳本,增加驗證/優化步驟??????????????###########################################################################################?MySQL的安裝路徑:basedir的上層目錄MYSQL_BASE_DIR=/opt/mysql#?MySQL數據目錄:datadir的上層目錄MYSQL_DATA_DIR=/data/mysql#?MySQL安裝日志信息MYSQL_INSTALL_LOG=/tmp/soft/mysql_install.log#?MySQL壓縮包路徑MYSQL_INSTALLER_DIR=/tmp/soft#?MySQL安裝介質#?注意事項,如果安裝介質不是tar.xz?,請修改代碼中tar.xzMYSQL_INSTALLER=$MYSQL_INSTALLER_DIR/mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz#?MySQL的my.cnf模板MYSQL_CONFIG_FILE=$MYSQL_INSTALLER_DIR/mysql8_template.cnf#?alter_root_passwd文件SQL_ALTER_USER_PWD=$MYSQL_INSTALLER_DIR/alter_root_passwd.sql#?Log輸出方式:log?或out或allLOG_OUT_TYPE=all#?MySQL的端口號MYSQL_PORT=3306#?記錄安裝過程的日志信息function?log_info(){????#判斷參數個數????if?[?$#?-eq?1?];then????????local?log_msg=$1????else????????echo?'[error]:`date?'+%Y%m%d?%H:%M:%S'`>?the?number?of?parameters?is?incorrect!'????fi????:<<EOF????if?[?$LOG_OUT_TYPE?=?'print'?];then????????echo?'[info?]:?`date`>?$log_msg'????else????????echo?'[info?]:?`date`>?$log_msg'?>>?$MYSQL_INSTALL_LOG????fiEOF????case?$LOG_OUT_TYPE?in????????out)????????????echo?'[info?]:?`date?'+%Y%m%d?%H:%M:%S'`>?$log_msg'????????????;;????????log)????????????echo?'[info?]:?`date?'+%Y%m%d?%H:%M:%S'`>?$log_msg'?>>?$MYSQL_INSTALL_LOG????????????;;????????all)????????????echo?'[info?]:?`date?'+%Y%m%d?%H:%M:%S'`>?$log_msg'????????????echo?'[info?]:?`date?'+%Y%m%d?%H:%M:%S'`>?$log_msg'?>>?$MYSQL_INSTALL_LOG????????????;;????????*)????esac????????}#?記錄安裝過程的錯誤信息function?log_error(){????#判斷參數個數????if?[?$#?-eq?1?];then????????local?log_msg=$1????else????????echo?'[error]:`date?'+%Y%m%d?%H:%M:%S'`>?the?number?of?parameters?is?incorrect!'????fi????:<<EOF????if?[?$LOG_OUT_TYPE?=?'print'?];then????????echo?'[error]:`date`>?$log_msg'????else????????echo?'[error]:`date`>?$log_msg'?>>?$MYSQL_INSTALL_LOG????fiEOF????case?$LOG_OUT_TYPE?in????????out)?????????????echo??'[error]:`date?'+%Y%m%d?%H:%M:%S'`>?$log_msg'?????????????;;????????log)?????????????echo??'[error]:`date?'+%Y%m%d?%H:%M:%S'`>?$log_msg'?>>?$MYSQL_INSTALL_LOG?????????????;;????????all)?????????????echo??'[error]:`date?'+%Y%m%d?%H:%M:%S'`>?$log_msg'?????????????echo??'[error]:`date?'+%Y%m%d?%H:%M:%S'`>?$log_msg'?>>?$MYSQL_INSTALL_LOG?????????????;;????????*)????esac}#?卸載系統自帶的MARIADB#rpm?-qa|grep?mariadb?|xargs?yum?remove?-y?>?/dev/nullfunction?check_env_setting(){????#?檢查操作系統是否Linux(此腳本不適用HP-UX/SunOS/AIX)????if?[?`uname?-s`='Linux'?];then????????log_info?'The?os?is?linux,mysql?auto?install?continue...'????else????????log_error?'the?os?is?not?linux,?please?check?it.'????????exit?1????fi????#?檢查存放安裝包目錄是否存在????if?[?!?-d?'$MYSQL_INSTALLER_DIR'?];then????????log_error?'the?mysql?installer?directory?$MYSQL_INSTALLER_DIR?didn't?exists,?please?check?it'????????exit?1????else????????log_info?'the?mysql?installer?directory?$MYSQL_INSTALLER_DIR?exist,?mysql?auto?install?continue...';????fi????????#?檢查MySQL安裝文件是否存在????if?[?!?-f?'$MYSQL_INSTALLER'?];then????????log_error?'the?mysql?installer?file?$MYSQL_INSTALLER?didn't?exist,?please?check?it'????????exit?1????else????????log_info??'the?mysql?installer?file?$MYSQL_INSTALLER?exist,?mysql?auto?install?continue...'????fi????????#?檢查MySQL的my.cnf的模板文件是否存在????if?[?!?-f?$MYSQL_CONFIG_FILE?];then????????log_error?'the?mysql?configuration?template?file?$MYSQL_CONFIG_FILE?did'nt?exist,?please?check?it'????????exit?1????else????????log_info?'the?mysql?configuration??template?file?$MYSQL_CONFIG_FILE?exists,mysql?auto?install?continue...'????fi????????#?檢查修改mysql數據庫用戶root密碼的SQL文件是否存在。????if?[?!?-f?$SQL_ALTER_USER_PWD?];then????????log_error?'the?sql?file?$SQL_ALTER_USER_PWD?did'nt?exist,?please?check?it'????????exit?1????else????????log_info?'the?sql?file?$SQL_ALTER_USER_PWD?exists,mysql?auto?install?continue...'????fi????????????#?檢查MySQL安裝目錄的上層目錄是否存在????if?[?!?-d?'$MYSQL_BASE_DIR'?];then????????log_error?'the?$MYSQL_BASE_DIR?didn't?exists,?please?check?it'????????exit?1????else????????log_info?'the?$MYSQL_BASE_DIR?exists,?mysql?auto?install?continue...'????fi????????#?檢查MYSQL_DATA_DIR對應的目錄是否存在,此目錄為datadir的上一層目錄????if?[?!?-d?'$MYSQL_DATA_DIR'?];then????????log_error?'the?$MYSQL_DATA_DIR?didn't?exists,?please?check?it'????????exit?1????else????????log_info?'the?$MYSQL_DATA_DIR?exists,?mysql?auto?install?continue...'????fi????????#?檢查MYSQL_DATA_DIR目錄下是否存在其目錄,如果有其它目錄,則退出安裝(擔心已經安裝了MySQL實例)????if?[?-d?${MYSQL_DATA_DIR}?-a?'`ls?-A?${MYSQL_DATA_DIR}`'?!=?''?];then????????log_error?'the?$MYSQL_DATA_DIR?directory?have?exists?files,plese?check?it'????????exit?1????else?????????log_info?'the?$MYSQL_DATA_DIR?check?is?ok?,mysql?auto?install?continue...'????fi????????#?驗證MySQL安裝介質的MD5????????????#?檢查是否存在MySQL實例????mysql_status=`netstat?-nl?|?awk?'NR>2{if?($4?~?/.*:'${MYSQL_PORT}'/)?{print?'Yes';exit?0}}'`????echo?$mysql_status????if?[?'$mysql_status'?=?'Yes'?];then????????log_error?'MySQL?instance?exists.?please?check?it'????????exit?1????else????????#只能作為一個依據,并不能完全保證。????????log_info?'MySQL?instance?didn't?exists,mysql?auto?install?continue...'????fi????????echo?'check_env_setting?run?successful.'????#read?ANS????read?-n1?-p?'Do?you?want?to?continue?[Y/N]?'?answer????case?$answer?in????????Y?|?y)????????????log_info?'mysql?auto?install?continue...';;????????N?|?n)????????????log_info?'mysql?auto?install?exit.';;????????*)????????????log_error?'your?choice?is?wrong!';;????esac}#?創建MySQL用戶和用戶組(此處注釋,用戶由系統管理員創建)#echo?'[info]:?create?the?mysql?user...'#groupadd?mysql#/usr/sbin/groupadd?mysql#useradd?-g?mysql?mysql#/usr/sbin/useradd?-g?mysql?mysql#?創建MySQL的相關目錄function?create_mysql_dir(){????cd?$MYSQL_DATA_DIR????mkdir?conf?data??logs??slow_logs??bin_logs??mysql_temp????chmod?750??$MYSQL_DATA_DIR????#對目錄進行授權????chmod?-R?760??$MYSQL_DATA_DIR/bin_logs????chmod?-R?700??$MYSQL_DATA_DIR/logs????chmod?-R?760??$MYSQL_DATA_DIR/slow_logs}function?mysql_cnf_setting(){????#?拷貝my.cnf的模板配置文件,這里不打算直接寫入生成my.cnf文件????cp?$MYSQL_CONFIG_FILE?$MYSQL_DATA_DIR/conf/my.cnf????if?[?$??-ne?0?];then????????log_error?'failed?to?cp?the?my.cnf,please?check?it'????????exit?1????else????????log_info??'cp?the?$MYSQL_CONFIG_FILE?to?my.cnf?success!'????fi}function?mysql_env_setting(){????#?設置環境變量????local?env_exist=`cat?~/.bash_profile?|grep?-E?'MYSQL_HISTFILE|$MYSQL_BASE_DIR/mysql8.0/bin'?|?wc?-l`????if?[?$env_exist?-eq?0?];then????????echo?'export?PATH=\$PATH:$MYSQL_BASE_DIR/mysql8.0/bin'?>>?~/.bash_profile????????echo?'export?MYSQL_HISTFILE=/dev/null'?>>?~/.bash_profile????????source?~/.bash_profile????else????????log_info?'the?environment?variable?exists,?please?check?it!'????fi}#?解壓MySQL的二進制安裝包function?mysql_install(){????echo?'[info]:unzip?the?mysql?installation?media....'????tar?-xvf?$MYSQL_INSTALLER?-C?$MYSQL_BASE_DIR????if?[?$??-ne?0?];then????????log_error?'mysql?media?unzip?failed,please?check?the?detail.'????????exit????else????????log_info??'mysql?media?unzip?success,mysql?auto?install?continue...'????fi????????#?創建軟連接????local?MYSQL_MEDIA_DIR=$(basename?${MYSQL_INSTALLER}?'.tar.xz')????#echo??$MYSQL_MEDIA_DIR????ln?-s?$MYSQL_BASE_DIR/$MYSQL_MEDIA_DIR??$MYSQL_BASE_DIR/mysql8.0????if?[?$??-ne?0?];then????????log_error?'create?the?mysql?soft?link?failed,?please?check?it'????????exit?1????else????????log_info?'create?the?mysql?soft?link?success,mysql?auto?install?continue...'????fi????????????#??初始化MySQL????cd?$MYSQL_BASE_DIR/mysql8.0????$MYSQL_BASE_DIR/mysql8.0/bin/mysqld?\????--defaults-file=$MYSQL_DATA_DIR/conf/my.cnf?\????--initialize?\????--basedir=$MYSQL_BASE_DIR/mysql8.0?\????--datadir=$MYSQL_DATA_DIR/data??2>&1?|?>>?$MYSQL_INSTALL_LOG????????#????$MYSQL_BASE_DIR/mysql8.0/bin/mysql_ssl_rsa_setup?--datadir=$MYSQL_DATA_DIR/data}function?mysql_startup(){????$MYSQL_BASE_DIR/mysql8.0/bin/mysqld_safe?--defaults-file=$MYSQL_DATA_DIR/conf/my.cnf?&????????#?休眠幾秒,等待MySQL服務啟動????sleep?15????????#?檢查MySQL服務是否啟動成功????mysql_status=`netstat?-nl?|?awk?'NR>2{if?($4?~?/.*:'${MYSQL_PORT}'/)?{print?'Yes';exit?0}}'`????echo?$mysql_status????if?[?'$mysql_status'?!=?'Yes'?];then????????log_error?'MySQL?did?not?start.?please?check?it'????????exit?1????else????????log_info?'MySQL?start?success,mysql?auto?install?continue...'????fi}#?修改MySQL的root用戶密碼function?change_mysql_root_pwd(){????#?獲取root初始密碼????mysql_root_init_passd=`grep?'temporary?password'?$MYSQL_DATA_DIR/logs/mysql_error.log?|awk?'{print?$NF}'`????????#?修改MySQL的root密碼????mysql?-uroot?-p'$mysql_root_init_passd'?--connect-expired-password?<?$SQL_ALTER_USER_PWD?2>?/dev/null????????if?[?$??-ne?0?];then????????log_error?'fail?to?perform?MySQL?operation!!!'????????exit?1????else????????log_info?'alter?the?mysql?user?root's?password?succeed!'????fi}#?MySQL的安全設置,此腳本在mysql用戶下運行,默認這些文件的屬主為mysqlfunction?mysql_security_setting{????#注意,此處寫死mysql_error.log,是因為my.cnf模板中命名統一規范????chmod?660??$MYSQL_DATA_DIR/logs/mysql_error.log????#注意,此處寫死mysql_binlog.*,是因為my.cnf模板中命名統一規范????chmod?600?$MYSQL_DATA_DIR/bin_logs/mysql_binlog.*????chmod?400?$MYSQL_DATA_DIR/data/*.pem????#注意,此處寫死mysql_slow.log,是因為my.cnf模板中命名統一規范????chmod?660?$MYSQL_DATA_DIR/slow_logs/mysql_slow.log????#plugin_dir的權限設置????chmod?550?$MYSQL_BASE_DIR/mysql8.0/lib/plugin/?}function?main()?{????????check_env_setting????????create_mysql_dir????????mysql_cnf_setting????????mysql_env_setting????????mysql_install????????mysql_startup????????change_mysql_root_pwd????????????if?[?$??-ne?0?];then????????????log_error?'change_mysql_root_pwd?run?failed!'????????else????????????????log_info?'the?mysql?auto?install?was?successful!'????????fi????????mysql_security_setting}#?invoke?main?functionmain?

下面是安裝測試過程的截圖

下面是安裝日志mysql_install.log的輸出信息截圖:

到此這篇關于MySQL自動安裝腳本代碼實例分享的文章就介紹到這了,更多相關MySQL自動安裝腳本內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
主站蜘蛛池模板: 双相钢_双相不锈钢_双相钢圆钢棒_双相不锈钢报价「海新双相钢」 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 盘扣式脚手架-附着式升降脚手架-移动脚手架,专ye承包服务商 - 苏州安踏脚手架工程有限公司 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 西装定制/做厂家/公司_西装订做/制价格/费用-北京圣达信西装 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 盛源真空泵|空压机-浙江盛源空压机制造有限公司-【盛源官网】 | 万博士范文网-您身边的范文参考网站Vanbs.com | 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | RFID电子标签厂家-上海尼太普电子有限公司 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 济南宣传册设计-画册设计_济南莫都品牌设计公司 | 深圳富泰鑫五金_五金冲压件加工_五金配件加工_精密零件加工厂 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 散热器厂家_暖气片_米德尔顿散热器| 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 软启动器-上海能曼电气有限公司| 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 岩棉板|岩棉复合板|聚氨酯夹芯板|岩棉夹芯板|彩钢夹芯板-江苏恒海钢结构 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | 真丝围巾|真丝丝巾|羊绒围巾|围巾品牌|浙江越缇围巾厂家定制 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 能量回馈_制动单元_电梯节能_能耗制动_深圳市合兴加能科技有限公司 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 |