自动化运维——一键安装MySQL
根据项目需要,前段时间在搞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 2016/03/30, modify 2016/04/20
- # -----------------------------------------------------------------------------
- # Installation Script for the auto-deployment EMM(Linux edition)
- # -----------------------------------------------------------------------------
- # -----------------------------------------------------------------------------
- # shell script to install MySQL (default version mysql-community-5.7.11)
- echo "-----------------------start install mysql----------------------"
- # Add to mysql user and mysql group
- if [ `grep "mysql" /etc/passwd | wc -l` -eq 0 ];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.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
- # check the installtation was successful or not
- rpm -qa |grep "mysql"
- if [ $? != 0 ];then
- echo "mysql install fail"| tee $mysql_instlog
- exit 1
- 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
至此完结。
版权声明:本文为kevinji原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。