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

 

至此完结。

版权声明:本文为kevinji原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/kevinji/p/5520295.html