根据项目需要,前段时间在搞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.  初始化数据库。
  1. #!/bin/bash
  2.  
  3. #created by Kevin //, modify //
  4.  
  5. # -----------------------------------------------------------------------------
  6. # Installation Script for the auto-deployment EMM(Linux edition)
  7. # -----------------------------------------------------------------------------
  8.  
  9. # -----------------------------------------------------------------------------
  10. # shell script to install MySQL (default version mysql-community-5.7.)
  11.  
  12. echo "-----------------------start install mysql----------------------"
  13.  
  14. # Add to mysql user and mysql group
  15.  
  16. if [ `grep "mysql" /etc/passwd | wc -l` -eq ];then
  17. echo "adding user mysql"
  18. groupadd mysql
  19. useradd -r -g mysql mysql
  20. else
  21. echo "mysql user is exist"
  22. fi
  23.  
  24. # check installed mysql or not
  25. for i in `rpm -qa | grep "mysql"`
  26. do
  27. rpm -e --allmatches $i --nodeps
  28. done
  29.  
  30. # Remove pre-installed on OS MariaDB if exists
  31.  
  32. for i in $(rpm -qa | grep mariadb | grep -v grep)
  33. do
  34. echo "Deleting rpm --> "$i
  35. rpm -e --nodeps $i
  36. done
  37.  
  38. # Install mysqlserver
  39.  
  40. 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
  41.  
  42. # check the installtation was successful or not
  43. rpm -qa |grep "mysql"
  44. if [ $? != ];then
  45. echo "mysql install fail"| tee $mysql_instlog
  46. exit
  47. else
  48. echo "mysql isntall success"| tee $mysql_instlog
  49. fi
  50.  
  51. # modify configuration files
  52. cd /etc/
  53. echo "character_set_server=utf8" >> my.cnf
  54.  
  55. # startup the mysql
  56. systemctl start mysqld
  57. systemctl status mysqld
  58. /etc/init.d/mysqld start
  59. /etc/init.d/mysqld stop
  60.  
  61. echo "MySQL Server install successfully!"
  62.  
  63. # configuration
  64. cat /etc/my.cnf
  65. sed -i '/mysqld/a\skip-grant-tables' /etc/my.cnf
  66. systemctl restart mysqld
  67. # mysql -u root mysql
  68. mysql -u root mysql -e "use mysql;"
  69. # use mysql
  70. # update mysql.user set authentication_string=password('root') where user='root' ;
  71. mysql -u root mysql -e "update mysql.user set authentication_string=password('root') where user='root' ;"
  72. mysql -u root mysql -e "flush privileges;"
  73.  
  74. cat /etc/my.cnf
  75. sed -i '/skip-grant-tables/s/^/#/' /etc/my.cnf
  76. # mysql -u root -p
  77. # SET PASSWORD = PASSWORD('root');
  78. mysql -u root -proot --connect-expired-password -e "SET PASSWORD = PASSWORD('root');"
  79.  
  80. # mysql -u root mysql
  81. # use mysql;
  82. mysql -u root -proot -e "use mysql;"
  83. # update user set host = '%' where user ='root';
  84. mysql -u root -proot -e "update user set host = '%' where user ='root';"
  85. # select host, user from user;
  86. mysql -u root -proot -e "select host, user from user;"
  87. # exit
  88.  
  89. mysql -u root -proot -e "source /usr/src/tools/user.sql;"
  90. mysql -u root -proot -e "source /usr/src/tools/emm_saas_base.sql;"
  91. # create a new database, name as "emm_saas_base"
  92. # mysql -u root -p
  93. # create database emm_saas_base;
  94. # mysql -u root -proot -e "create database emm_saas_base;"
  95. # show databases;
  96. # mysql -u root -proot -e "show databases;"
  97.  
  98. # initdb
  99. # for x in find . -name "*.sql"
  100. # do source emm_saas_base.sql
  101. # done
  102.  
  103. # create user & authentication
  104. # mysql -u root -p
  105. # CREATE USER 'emm'@'%' IDENTIFIED BY 'emm';
  106. # GRANT ALL ON *.* TO 'emm'@'%';
  107.  
  108. # show user in the DB
  109. # select host,user from mysql.user;
  110. mysql -u root -proot -e "select host,user from mysql.user;"
  111.  
  112. echo "The MySQL install and config complete! "
 
Windows .bat版本:
  1. @echo off
  2. :: created by Kevin Ji 2016/04/08,modify 2016/05/18
  3. :: -----------------------------------------------------------------------------
  4. :: Installation Script for the auto-deployment EMM(Windows edition-copy)
  5. :: -----------------------------------------------------------------------------
  6. :: Modify EMM_Install script code for windows edition. Add to automatic configure install directory feature.
  7. :: creat an source package directory,name as "EMM_SRC" and an destination install directory,name as "EMM_DEST".
  8.  
  9. md C:\EMM_SRC
  10. md C:\EMM_DEST
  11.  
  12. :: ------------Install MySQL----------------------------------
  13. C:
  14. cd C:\EMM_SRC
  15. start winrar x -r %cd%\mysql-5.7.11-winx64.zip C:\EMM_DEST
  16. pause
  17.  
  18. :: ------------Config MySQL environment variable---------------
  19. rem set MYSQL_HOME=C:\mysql-5.7.11-winx64
  20. rem set PATH=%PATH%;C:\mysql-5.7.11-winx64\bin
  21. setx /M MYSQL_HOME C:\EMM_DEST\mysql-5.7.11-winx64
  22. setx /M PATH %PATH%;C:\EMM_DEST\mysql-5.7.11-winx64\bin
  23.  
  24. :: ------------MySQL installation and initialization------------
  25. xcopy %cd%\user.sql C:\EMM_DEST\mysql-5.7.11-winx64\bin\
  26. xcopy %cd%\emm_saas_base.sql C:\EMM_DEST\mysql-5.7.11-winx64\bin\
  27. C:
  28. cd C:\EMM_DEST\mysql-5.7.11-winx64\bin
  29. mysqld -install
  30. cd C:\EMM_DEST\mysql-5.7.11-winx64\bin
  31. mysqld --initialize
  32.  
  33. :: ------------modify MySQL configuration file-------------------------
  34. C:
  35. cd C:\EMM_DEST\mysql-5.7.11-winx64\
  36. rename C:\EMM_DEST\mysql-5.7.11-winx64\my-default.ini my.ini
  37. echo character_set_server=utf8 >> my.ini
  38. xcopy %cd%\my.ini C:\ /e /i /y
  39.  
  40. :: ------------modify MySQL-root password------------------------------
  41. net stop mysql
  42. echo skip-grant-tables >> my.ini
  43. ping -n 2 127.0.0.1 >nul
  44. taskkill /F /IM mysqld.exe
  45.  
  46. net start mysql
  47. cd C:\EMM_DEST\mysql-5.7.11-winx64\bin
  48. mysql -e "use mysql"
  49. mysql -e "update mysql.user set authentication_string=password('root') where user='root' ;"
  50. mysql -e "flush privileges;"
  51.  
  52. cd C:\EMM_DEST\mysql-5.7.11-winx64\
  53. rename my.ini myold.ini
  54. cd C:\
  55. xcopy C:\my.ini C:\EMM_DEST\mysql-5.7.11-winx64\
  56.  
  57. :: ------------restart MySQL service-------------------------------
  58. :: taskkill /F /IM mysqld.exe
  59. net start mysql
  60.  
  61. :: ------------Initialization DB-----------------------------------
  62. cd C:\EMM_DEST\mysql-5.7.11-winx64\
  63. echo [client] >> my.ini
  64. echo user=root >> my.ini
  65. echo password=root >> my.ini
  66. cd C:\EMM_DEST\mysql-5.7.11-winx64\bin
  67. mysql --connect-expired-password -e "SET PASSWORD = PASSWORD('root');"
  68. mysql --connect-expired-password -uroot -proot < C:\EMM_DEST\mysql-5.7.11-winx64\bin\user.sql
  69. mysql --connect-expired-password -e "use emm_saas_base;"
  70. mysql --connect-expired-password -uroot -proot < C:\EMM_DEST\mysql-5.7.11-winx64\bin\emm_saas_base.sql
  71. pause
  72. 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. html/css 两个div在同一行

    在界面设计的时候,经常需要将两个div在同一行显示. 但是每次都会忘记怎么做,特此随笔,备忘. 如以下要将“第一个div”和“第二个div”显示在同一行: <div id="id1&q ...

  2. iOS搜索框

    在iOS8以前搜索框是作为一个控件添加到TableViewController中, 有系统自带的搜索变量self.searchDisplayController 遵守一个搜索显示的协议<UISe ...

  3. SVN更改用户名和密码

    关于SVN更换用户名和密码的问题,SVN是一个脚本的扩展软件,但是通过客户端更改用户名和密码的时候比较弱智,必须要经过一些操作之后才能出现更改用户名和密码的对话框. 主要的步骤就是“点击鼠标右键选择T ...

  4. T-SQL利用Row_Number函数实现分页

    SQL: CREATE PROCEDURE PagingViewTest ( @currentPageIndex INT, --页序号 @pageSize INT, --页大小 @pageCount ...

  5. CSS3—3D翻转

    本案例主要是css3和html5,不会js也可以做动画◕.◕ 一.首先看下主要需要的样式: perspective transform transition position classList 就这 ...

  6. MyBatis(3.2.3) - Passing multiple input parameters

    MyBatis's mapped statements have the parameterType attribute to specify the type of input parameter. ...

  7. 感受函数式编程-scala

    /** * Created by jx_luo on 2015/3/18. */object test03 { def main(Args:Array[String]): Unit ={ val st ...

  8. RDD机制实现模型Spark初识

    Spark简介 Spark是基于内存计算的大数据分布式计算框架.Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性.       在Spark中,通过RDD( ...

  9. Linux 最常用命令小结

    1. 文件共享 1).将windows 系统下的文件夹共享到linux的方法: 安装filezilla,设置连接linux 服务器.将文件上传. 2).mRemote 机器连接管理 2. 文件管理命令 ...

  10. Unity3D设置字体颜色大小,用于游戏分数显示设置等,

    最近在学unity3d,慢慢的学会了许多unity的东西,今天记录下unity3d的Label字体大小及颜色的代码,下面是显示游戏中分数的代码,, public static int Score = ...