根据项目需要,前段时间在搞EMM系统各种安装包的自动化部署工作,主要包括一键安装和一键启动\停止功能。总结记录下来,以供后用。
本文主要是自动安装MySQL5.7.11版,Linux版脚本在CentOS7系统下测试通过。
流程如下:
a. 增加mysql用户和组
b. 检查系统是否安装有老版MySQL,如果有就卸载。
c.  卸载OS预装的Maria DB. 由于MariaDB与MySQL水火不容,须将系统预装的MariaDB卸载后再安装mysql.
b. 安装MySQL, 本次是采用RPM包的方式安装,相对简单些;当然也可以使用源码包编译安装,稍微耗时。
c. 修改配置文件my.ini,添加一条语句,增加UTF8字符支持。
d. 修改root用户密码及权限。先在my.ini文件中添加skip-grant-tables,使其跳过认证,然后无密码登陆数据库,配置密码和权限后,要把配置文件中刚才加入的skip-grant-tables注释掉,否则会报错。
e. 根据需要创建相应emm数据库及用户. 
f.  初始化数据库。
#!/bin/bash

#created by Kevin //, modify //

# -----------------------------------------------------------------------------
# Installation Script for the auto-deployment EMM(Linux edition)
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# shell script to install MySQL (default version mysql-community-5.7.) echo "-----------------------start install mysql----------------------" # Add to mysql user and mysql group if [ `grep "mysql" /etc/passwd | wc -l` -eq ];then
echo "adding user mysql"
groupadd mysql
useradd -r -g mysql mysql
else
echo "mysql user is exist"
fi # check installed mysql or not
for i in `rpm -qa | grep "mysql"`
do
rpm -e --allmatches $i --nodeps
done # Remove pre-installed on OS MariaDB if exists for i in $(rpm -qa | grep mariadb | grep -v grep)
do
echo "Deleting rpm --> "$i
rpm -e --nodeps $i
done # Install mysqlserver rpm -ivh mysql-community-server-5.7.-.el7.x86_64.rpm mysql-community-client-5.7.-.el7.x86_64.rpm mysql-community-common-5.7.-.el7.x86_64.rpm mysql-community-libs-5.7.-.el7.x86_64.rpm # check the installtation was successful or not
rpm -qa |grep "mysql"
if [ $? != ];then
echo "mysql install fail"| tee $mysql_instlog
exit
else
echo "mysql isntall success"| tee $mysql_instlog
fi # modify configuration files
cd /etc/
echo "character_set_server=utf8" >> my.cnf # startup the mysql
systemctl start mysqld
systemctl status mysqld
/etc/init.d/mysqld start
/etc/init.d/mysqld stop echo "MySQL Server install successfully!" # configuration
cat /etc/my.cnf
sed -i '/mysqld/a\skip-grant-tables' /etc/my.cnf
systemctl restart mysqld
# mysql -u root mysql
mysql -u root mysql -e "use mysql;"
# use mysql
# update mysql.user set authentication_string=password('root') where user='root' ;
mysql -u root mysql -e "update mysql.user set authentication_string=password('root') where user='root' ;"
mysql -u root mysql -e "flush privileges;" cat /etc/my.cnf
sed -i '/skip-grant-tables/s/^/#/' /etc/my.cnf
# mysql -u root -p
# SET PASSWORD = PASSWORD('root');
mysql -u root -proot --connect-expired-password -e "SET PASSWORD = PASSWORD('root');" # mysql -u root mysql
# use mysql;
mysql -u root -proot -e "use mysql;"
# update user set host = '%' where user ='root';
mysql -u root -proot -e "update user set host = '%' where user ='root';"
# select host, user from user;
mysql -u root -proot -e "select host, user from user;"
# exit mysql -u root -proot -e "source /usr/src/tools/user.sql;"
mysql -u root -proot -e "source /usr/src/tools/emm_saas_base.sql;"
# create a new database, name as "emm_saas_base"
# mysql -u root -p
# create database emm_saas_base;
# mysql -u root -proot -e "create database emm_saas_base;"
# show databases;
# mysql -u root -proot -e "show databases;" # initdb
# for x in find . -name "*.sql"
# do source emm_saas_base.sql
# done # create user & authentication
# mysql -u root -p
# CREATE USER 'emm'@'%' IDENTIFIED BY 'emm';
# GRANT ALL ON *.* TO 'emm'@'%'; # show user in the DB
# select host,user from mysql.user;
mysql -u root -proot -e "select host,user from mysql.user;" echo "The MySQL install and config complete! "
 
Windows .bat版本:
@echo off
:: created by Kevin Ji 2016/04/08,modify 2016/05/18
:: -----------------------------------------------------------------------------
:: Installation Script for the auto-deployment EMM(Windows edition-copy)
:: -----------------------------------------------------------------------------
:: Modify EMM_Install script code for windows edition. Add to automatic configure install directory feature.
:: creat an source package directory,name as "EMM_SRC" and an destination install directory,name as "EMM_DEST". md C:\EMM_SRC
md C:\EMM_DEST :: ------------Install MySQL----------------------------------
C:
cd C:\EMM_SRC
start winrar x -r %cd%\mysql-5.7.11-winx64.zip C:\EMM_DEST
pause :: ------------Config MySQL environment variable---------------
rem set MYSQL_HOME=C:\mysql-5.7.11-winx64
rem set PATH=%PATH%;C:\mysql-5.7.11-winx64\bin
setx /M MYSQL_HOME C:\EMM_DEST\mysql-5.7.11-winx64
setx /M PATH %PATH%;C:\EMM_DEST\mysql-5.7.11-winx64\bin :: ------------MySQL installation and initialization------------
xcopy %cd%\user.sql C:\EMM_DEST\mysql-5.7.11-winx64\bin\
xcopy %cd%\emm_saas_base.sql C:\EMM_DEST\mysql-5.7.11-winx64\bin\
C:
cd C:\EMM_DEST\mysql-5.7.11-winx64\bin
mysqld -install
cd C:\EMM_DEST\mysql-5.7.11-winx64\bin
mysqld --initialize :: ------------modify MySQL configuration file-------------------------
C:
cd C:\EMM_DEST\mysql-5.7.11-winx64\
rename C:\EMM_DEST\mysql-5.7.11-winx64\my-default.ini my.ini
echo character_set_server=utf8 >> my.ini
xcopy %cd%\my.ini C:\ /e /i /y :: ------------modify MySQL-root password------------------------------
net stop mysql
echo skip-grant-tables >> my.ini
ping -n 2 127.0.0.1 >nul
taskkill /F /IM mysqld.exe net start mysql
cd C:\EMM_DEST\mysql-5.7.11-winx64\bin
mysql -e "use mysql"
mysql -e "update mysql.user set authentication_string=password('root') where user='root' ;"
mysql -e "flush privileges;" cd C:\EMM_DEST\mysql-5.7.11-winx64\
rename my.ini myold.ini
cd C:\
xcopy C:\my.ini C:\EMM_DEST\mysql-5.7.11-winx64\ :: ------------restart MySQL service-------------------------------
:: taskkill /F /IM mysqld.exe
net start mysql :: ------------Initialization DB-----------------------------------
cd C:\EMM_DEST\mysql-5.7.11-winx64\
echo [client] >> my.ini
echo user=root >> my.ini
echo password=root >> my.ini
cd C:\EMM_DEST\mysql-5.7.11-winx64\bin
mysql --connect-expired-password -e "SET PASSWORD = PASSWORD('root');"
mysql --connect-expired-password -uroot -proot < C:\EMM_DEST\mysql-5.7.11-winx64\bin\user.sql
mysql --connect-expired-password -e "use emm_saas_base;"
mysql --connect-expired-password -uroot -proot < C:\EMM_DEST\mysql-5.7.11-winx64\bin\emm_saas_base.sql
pause
echo MySQL Install and configuration complete

至此完结。

自动化运维——一键安装MySQL的更多相关文章

  1. 自动化运维Ansible安装篇

    Ansible自动化工具之--部署篇 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了 ...

  2. CentOSLinux系统中Ansible自动化运维的安装以及利用Ansible部署JDK和Hadoop

    Ansible 安装和配置 Ansible 说明 Ansible 官网:https://www.ansible.com/ Ansible 官网 Github:https://github.com/an ...

  3. 【linux】【jenkins】自动化运维二 安装插件

    gitlab安装教程参考:https://www.cnblogs.com/jxd283465/p/11525629.html 1.Maven Integration Plugins Jenkins安装 ...

  4. Ansible自动化运维工具安装与使用实例

    1.准备两台服务器,要确定网络是通的.服务器当然越多越好啦....Ansible的简介和好处我就不多说了,自己看百科去(*╹▽╹*) IP:192.168.139.100 IP:192.168.139 ...

  5. python自动化运维篇

    1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...

  6. Inception介绍(MySQL自动化运维工具)

    Inception介绍 GitHub:https://github.com/mysql-inception/inception 文档:https://mysql-inception.github.io ...

  7. 部署MySQL自动化运维工具inception+archer

    ***************************************************************************部署MySQL自动化运维工具inception+a ...

  8. 轻量级自动化运维工具Fabric的安装与实践

    一.背景环境 在运维工作中,经常会遇到重复性的劳动,这个时候为了效率就必须要使用自动化运维工具. 这里我给大家介绍轻量级自动化运维工具Fabric,Fabric是基于Python语言开发的,是开发同事 ...

  9. 自动化运维工具之 Ansible 介绍及安装使用

    一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...

随机推荐

  1. 【推理,贪心】UVa 1319 - Maximum

    看到了大神的代码.理解了好久...真是差距. 题意:给出m, p, a, b,然后xi满足已下两个公式, 求 xp1 + xp2 +...+ xpm 的最大值. 1.-1/sqrt(a) <= ...

  2. 203. Segment Tree Modify

    最后更新 二刷 08-Jan-2017 利用线段树来更改,找到更改的NODE,然后更改那个brach上的所有max值. 首先确定recursion的终止条件 然后通过判断大小来找方向 找到NODE之后 ...

  3. Linux 命令 - rm: 删除文件和目录

    命令格式 rm [OPTION]... FILE... 命令参数 -f, --force 强制删除,忽略不存在的文件,不会提示. -i, --interactive 没次删除文件时,提示用户确认. - ...

  4. 基于asp.net MVC 的服务器和客户端的交互(二)之获取Oauth 2.0认证权限

    基本Web API的ASP.NET的Oauth2认证 增加Token额外字段 增加Scope授权字段 持久化Token 设计Token的时间间隔 刷新Token后失效老的Token 自定义验证[重启I ...

  5. asp.net mvc开发的社区产品相关开发文档分享

    分享一款基于asp.net mvc框架开发的社区产品--近乎.目前可以在官网免费下载,下载地址:http://www.jinhusns.com/Products/Download?type=whp 1 ...

  6. As,is含义?using 语句

    Is:检查对象是否与给定的类型兼容.例如,下面的代码可以确定MyObject类型的一个实例,或者对象是否从MyObject派生的一个类型:        if(obj is MyObject){}   ...

  7. SQL_从星期一到星期六自动打卡SQL代码

    create proc sp_MarkAutoKQ as begin ) ---创建两个变量,接收当前时间和当天是星期几 set @dateA=getdate() ---获取当前时间 set @dat ...

  8. VS2010与QT的集成开发环境

    http://blog.csdn.net/hbsong75/article/details/9293773 QT与Java有点类似,也是一种跨平台的软件(当然在windows平台和Linux平台需要安 ...

  9. cv::mat转换成QImage的问题

    在进行cv::mat转换为QImage过程中,经常出现问题: cv::Mat image; ...QImage img=QImage((const unsigned char*)(image.data ...

  10. BLK-MD-BC04-B蓝牙模块开发说明

    BLK-MD-BC04-B蓝牙模块开发说明 日期:2011-9-24 浏览次数:4178     BLK-MD-BC04-B蓝牙通信模块, BLK-MD-BC04-B蓝牙通信模块 为本公司自主开发的智 ...