暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql一键安装脚本

运维DevOps 2022-03-05
358
  • 提前将二进制包和安装脚本以及配置文件my.cnf上传到服务器上,软件包下载地址:https://dev.mysql.com/downloads/mysql/

  • 本例子中的mysql版本为5.7.19,其余版本同样适用,只需要修改解压文件名以及软链接名即可

  • 脚本内容如下:

    #!/bin/bash
    # @Author: GongGuan
    # @Date: 2021-10-26
    set -e
    echo "**********************Install MySQL*********************"
    workdir=/usr/local/
    echo "************tar xf file*************"
    FileName=mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
    #解压文件并创建软链接
    if [ -f $FileName ];then
    tar zxvf $FileName -C ${workdir}
    if [ $? -eq 0 ];then
    echo "********File decompression Success********"
    echo "********Copy my.cnf to etc/********"
    \cp my.cnf etc/ #注意: 需要提前将my.cnf文件放在脚本同级目录位置
    echo "********Create Soft Link********"
    cd ${workdir}
    ln -s mysql-5.7.19-linux-glibc2.12-x86_64/ mysql
    echo "********Soft Link Create Success********"
    else
    echo "File Decompression Faild,Please Check!!!"
    exit 1
    fi
    else
    echo "No Found File,Please Check!!!"
    fi
    #创建普通用户和组
    echo "********create mysql user and group********"
    [ -z "$(grep 'mysql' etc/group | awk -F ':' '{print $1}')" ] && groupadd -g 1000 mysql
    [ -z "$(grep 'mysql' /etc/passwd | awk -F ':' '{print $1}')" ] && useradd -g mysql -u 1000 -s /sbin/nologin mysql
    #给mysql目录和配置文件设置属主和属组
    echo "********Set permissions********"
    chown -R mysql:mysql mysql/*
    chown mysql:mysql /etc/my.cnf
    #将mysql可执行文件添加到环境变量中
    echo "********Add mysql Binary file to env********"
    echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    source /etc/profile
    #c创建数据目录和binlog目录,执行初始化
    echo "********create data directory or binlog directory********"
    [ ! -d "/data/mysql/data" -o ! -d "/data/mysql/binlog" ] && mkdir -p /data/mysql/{data,binlog}
    chown -R mysql:mysql /data/mysql
    echo "********mysql initialization********"
    mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
    passwd_root=$(grep 'temporary password' /data/mysql/error.log | awk '{print $11}') #获取初始密码
    [ -n "${passwd_root}" ] && echo "<<<<<<<<<<mysql初始化成功>>>>>>>>>>>>"
    echo "root密码为:${passwd_root}" > /data/mysql/mysql_root_passwd.txt
    #copy可执行文件到/etc/init.d/目录下,并重命名为mysqld
    \cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    echo "********将mysql设置为开机自启动********"
    echo "/etc/init.d/mysqld start" >> /etc/rc.d/rc.local
    chmod +x /etc/rc.d/rc.local
    #添加软连接
    ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
    #启动Mysql并执行登陆测试
    echo "********start mysqld**********"
    /etc/init.d/mysqld start
    /etc/init.d/mysqld status
    echo "<<<<<<<mysql root初始密码存储位置: /data/mysql/mysql_root_password.txt>>>>>>"
    #登陆mysql并设置密码
    复制

    my.cnf文件内容如下:

      [client]
      port=3306
      socket=/data/mysql/data/mysql.sock
      [mysqldump]
      quick
      max_allowed_packet = 16M


      [mysqld]
      user = mysql
      basedir = /usr/local/mysql
      datadir = /data/mysql/data
      port = 3306
      server-id = 1
      socket = /data/mysql/data/mysql.sock
      skip_name_resolve = 1                            #禁止解析主机名,只能用IP检查客户端登录
      character-set-server = utf8mb4 #设置默认字符集
      collation-server = utf8mb4_general_ci #字符集排序规则
      init_connect='SET NAMES utf8mb4' #设置client连接mysql时的字符集,防止乱码
      lower_case_table_names = 1 #是否对sql语句大小写不敏感,1表示不敏感
      key_buffer_size = 16M
      max_allowed_packet = 8M
      default-storage-engine=INNODB #默认存储引擎
      pid-file = /data/mysql/mysqld.pid #pid文件
      log-bin =/data/mysql/binlog/mysql-bin
      expire-logs-days=15 #清理binlog日志
      max_binlog_size = 1073741824
      max_connections = 6000 #最大进程连接数
      max_connect_errors = 6000 #最大错误连接数
      table_open_cache = 2048 #表描述符缓存大小,可以减少文件打开关闭次数
      max_allowed_packet = 64M #消息传输量的最大值
      log-error=/data/mysql/error.log
      binlog_format = mixed #binlog日志类型
      slow_query_log = ON #开启慢查询
      slow_query_log_file=/data/mysql/data/slow_query.log
      long_query_time=1 #慢查询时间,设置为1s
      wait_timeout=84600
      explicit_defaults_for_timestamp=true
      interactive_timeout=84600
      sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
      [mysqld_safe]
      open-file-limit = 28192
      #
      # include all files from the config directory
      #
      !includedir /etc/my.cnf.d
      复制

      注:my.cnf非固定内容,可根据需要添加其余参数

      文章转载自运维DevOps,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论