SHELL 基于centos6.7、centos7.4和中标麒麟系统安装数据库mysql8.0.11版本

#!/bin/sh
#基于centos6.7、centos7.4和中标麒麟系统安装数据库mysql8.0.11版本。
echo "---------开始检查mysql安装情况---------"
#定义my.cnf配置文件
function mysqlcnf()
{
    cat >> /etc/my.cnf <<EOF
[mysqld]
datadir=/mysql/mydata/data
socket=/tmp/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id = 1
lower-case-table-names=1

back_log = 80
max_connections = 300
max_connect_errors = 9999999
skip-grant-tables
skip-name-resolve
max_allowed_packet = 32M
default_authentication_plugin=mysql_native_password

skip-character-set-client-handshake
tmp_table_size = 96M
max_heap_table_size = 96M
thread_cache_size = 32

sort_buffer_size = 2M
join_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M

# 分配了2G内存,如果内存较小可以按比较调小比如2G内存的可以根据机器部署情况调整为512M或1024M
innodb_buffer_pool_size = 100M

innodb_buffer_pool_instances = 4
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2

log_bin = mysql_bin
binlog_format = MIXED
sql_mode=NO_ENGINE_SUBSTITUTION
# 如果硬盘小,可设置为0,不使用或者调小
binlog_expire_logs_seconds=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8
socket =/tmp/mysql.sock 
EOF
}
function setupmysql()
{
    if [ ! -d "/mysql/mydata/data" ];then
        mkdir  /mysql/mydata/data -p    #--创建目录
    fi
    
    if [ `grep "mysql" /etc/group | wc -l` -eq 0 ];then
        useradd -r mysql                   #  --创建mysql 用户
    fi
    
    chown -R mysql.mysql /mysql/mydata/data/  # --改变属主和属组
    tar xf /opt/forecast_tool/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ >/dev/null 2>&1
    if [ `find /usr/local/ -name 'mysql' -type l | wc -l` -eq 0 ];then
        cd /usr/local/
        ln -sv mysql-8.0.11-linux-glibc2.12-x86_64/ mysql >/dev/null 2>&1
    fi

    cd /usr/local/mysql/
    chown -R root.mysql ./*        #  --改变root下的mysql组
    /usr/local/mysql/bin/mysqld --initialize --lower-case-table-names=1 --user=mysql --basedir=/usr/local/mysql/ --datadir=/mysql/mydata/data >& /etc/null # --初始化
    cp support-files/mysql.server /etc/init.d/mysqld
    chkconfig --add mysqld             # --添加在服务里面
    
    
    
    
    if [ ! -f "/etc/my.cnf" ];then
        echo "-->[`date +"%Y-%m-%d %H:%M.%S"`] 修改my.cnf配置"
        mysqlcnf

    else
        mv /etc/my.cnf /etc/my.cnfbak
        mysqlcnf
    fi
    if [ `grep "mysql" /etc/profile | wc -l` -eq 0 ];then
        cat >> /etc/profile << eof
export PATH=\$PATH:/usr/local/mysql/bin
eof
    fi
    . /etc/profile
    service mysqld restart >& /dev/null 
    #在主服务上创建连接管理员的账户,不能再从服务器上创建
     echo "flush privileges;
            ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
            CREATE USER 'sa'@'%' IDENTIFIED WITH mysql_native_password BY 'cast1234';
            GRANT ALL PRIVILEGES ON *.* TO 'sa'@'%';
            grant Grant option on *.* to 'sa'@'%';
            " > sqlfile
    mysql -uroot < sqlfile
    rm sqlfile
    sed -i  's/skip-grant-tables/\#&/' /etc/my.cnf
    service mysqld restart >& /dev/null
}
#如果没有安装MySQL,则开始安装
if [ `rpm -qa | grep mysql | grep -v grep | wc -l` -eq 0 ];then
    echo "---------开始安装  mysql---------"
    setupmysql
    echo "-->[`date +"%Y-%m-%d %H:%M.%S"`] mysql 已经安装完成!"
else
    echo "-->[`date +"%Y-%m-%d %H:%M.%S"`]检查系统mysql版本!"
    echo -e "\n"
    mysqlversion="8.0.11"
    if [[ `mysql --help|grep linux-glibc|cut -d ' ' -f 4` = $mysqlversion ]];then
        echo "-->[`date +"%Y-%m-%d %H:%M:%S"`]系统已经安装mysql version:8.0.11"
        mv /etc/my.cnf /etc/my.cnfbak
        mysqlcnf
        echo "grant Grant option on *.* to sa@'%';
        flush privileges;" > sqlfile
        mysql -u root < sqlfile
        rm sqlfile
        service mysqld restart >& /dev/null #restart mysql
    else
        serveice mysqld stop >/dev/null 2>&1
        for  i in $(rpm -aq | grep ^mysql| grep -v grep)
        do
            echo "-->[`date +"%Y-%m-%d %H:%M:%S"`]正在卸载"$i
            rpm -e  --nodeps $i
        done
        if [ `rpm -qa | grep ^mysql | grep -v grep | wc -l` -eq 0 ];then
            echo "-->[`date +"%Y-%m-%d %H:%M.%S"`] 卸载成功 $i"
            echo "-->[`date +"%Y-%m-%d %H:%M:%S"`]开始安装mysql"
            setupmysql
            if [ `netstat -ntlp | grep 3306 | wc -l` -eq 1 ];then
                echo "-->[`date +"%Y-%m-%d %H:%M:%S"`]mydql安装成功"
            fi
        fi
    fi    
fi
echo "---------结束检查mysql安装情况---------"
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟来了2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值