• 自动化运维——一键安装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/askip-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-winx64in
    setx /M MYSQL_HOME C:EMM_DESTmysql-5.7.11-winx64
    setx /M PATH %PATH%;C:EMM_DESTmysql-5.7.11-winx64bin
    
    :: ------------MySQL installation and initialization------------
    xcopy %cd%user.sql C:EMM_DESTmysql-5.7.11-winx64in
    xcopy %cd%emm_saas_base.sql C:EMM_DESTmysql-5.7.11-winx64in
    C:
    cd C:EMM_DESTmysql-5.7.11-winx64bin
    mysqld -install
    cd C:EMM_DESTmysql-5.7.11-winx64bin
    mysqld --initialize 
    
    :: ------------modify MySQL configuration file-------------------------
    C:
    cd C:EMM_DESTmysql-5.7.11-winx64
    rename C:EMM_DESTmysql-5.7.11-winx64my-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_DESTmysql-5.7.11-winx64bin
    mysql -e "use mysql"
    mysql -e "update mysql.user set authentication_string=password('root') where user='root' ;"
    mysql -e "flush privileges;"
    
    cd C:EMM_DESTmysql-5.7.11-winx64
    rename my.ini myold.ini
    cd C:
    xcopy C:my.ini C:EMM_DESTmysql-5.7.11-winx64
    
    :: ------------restart MySQL service-------------------------------
    :: taskkill /F /IM mysqld.exe
    net start mysql
    
    :: ------------Initialization DB-----------------------------------
    cd C:EMM_DESTmysql-5.7.11-winx64
    echo [client] >> my.ini
    echo user=root >> my.ini
    echo password=root >> my.ini
    cd C:EMM_DESTmysql-5.7.11-winx64bin
    mysql --connect-expired-password -e "SET PASSWORD = PASSWORD('root');"
    mysql --connect-expired-password -uroot -proot < C:EMM_DESTmysql-5.7.11-winx64inuser.sql
    mysql --connect-expired-password -e "use emm_saas_base;"
    mysql --connect-expired-password -uroot -proot < C:EMM_DESTmysql-5.7.11-winx64inemm_saas_base.sql
    pause
    echo MySQL Install and configuration complete

    至此完结。

  • 相关阅读:
    数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);
    jsonp的三种跨域方式
    Python函数的参数
    Python 函数
    collection 类
    字符串,列表,元组,字典基本函数
    图像处理------图像加噪 分类: 视频图像处理 2015-07-24 09:26 24人阅读 评论(0) 收藏
    图像处理------理解卷积 分类: 视频图像处理 2015-07-24 09:25 24人阅读 评论(0) 收藏
    图像处理------颜色梯度变化 (Color Gradient) 分类: 视频图像处理 2015-07-24 09:23 27人阅读 评论(0) 收藏
    图像处理------噪声之美
  • 原文地址:https://www.cnblogs.com/kevinji/p/5520295.html
Copyright © 2020-2023  润新知