前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >centos7一键离线安装脚本-mysql5.7

centos7一键离线安装脚本-mysql5.7

作者头像
高大北
发布2022-06-14 20:50:54
9680
发布2022-06-14 20:50:54
举报
文章被收录于专栏:java架构计划训练营
使用方法
代码语言:javascript
复制
source install_mysql.sh

install_mysql.sh接收$1参数,设置mysql密码,默认密码为mysql初始密码,会打印出来。

$2为安装路径,默认安装路径为/usr/local.

$3为数据存储路径,默认安装路径为/usr/local/mysql/data.

install_mysql.sh
代码语言:javascript
复制
#!/bin/bash

. /etc/init.d/functions
password=$1
directory=$2
data_dir=$3
current_dir=`pwd`

function select_installation_directory(){
  if [[ -z ${directory} ]];
  then
    directory='/usr/local'
  fi
  if [[ -z ${data_dir} ]];
  then
    data_dir=${directory}/mysql/data
  fi
}

function delete_mariadb(){
  for i in $(rpm -qa | grep mariadb | grep -v grep)
  do
    echo "卸载mariadb -> "$i
    rpm -e --nodeps $i
  done
}

function check_gcc(){
  if [[ -z $(rpm -qa | grep ^gcc | grep -v grep) ]];
  then
    cd gcc && rpm -Uvh *.rpm --nodeps --force && cd ..
  fi
}

function create_mysql_config(){
  [[ -f /etc/my.cnf ]] && mv /etc/my.cnf /etc/my.cnf-$(date +%F-%H:%H:%S)
  cd "${current_dir}" && cp my.cnf /etc/
  system_mem_size=$(grep "^MemTotal" /proc/meminfo |awk '{print $2}')
  innodb_buffer_pool_size="$(echo "${system_mem_size}"/1024/10*6|bc)M"
  sed -i "s#^socket.*#socket = ${data_dir}/mysql.sock#g" /etc/my.cnf
  sed -i "s#^slow_query_log_file.*#slow_query_log_file = ${data_dir}/slow.log#g" /etc/my.cnf
  sed -i "s#^log-error.*#log-error = ${data_dir}/error.log#g" /etc/my.cnf
  sed -i "s#^log-bin.*#log-bin = ${data_dir}/mybinlog#g" /etc/my.cnf
  sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = ${innodb_buffer_pool_size}M#g" /etc/my.cnf
  sed -i "s#^innodb_undo_directory.*#innodb_undo_directory = ${data_dir}/undolog#g" /etc/my.cnf
  sed -i "s#^basedir.*#basedir = ${directory}/mysql#g" /etc/my.cnf
  sed -i "s#^datadir.*#datadir = ${data_dir}#g" /etc/my.cnf
  echo -e "\n"
}

function add_mysql_user(){
  id mysql >& /dev/null
  if [[ $? -ne 0 ]];
  then
    echo "用户不存在,开始创建mysql用户"
    groupadd mysql
    useradd -g mysql mysql
  fi
}

function install_mysql(){
  tar_name=$(ls .|grep mysql-.*.tar.gz)
  tar_dir=${tar_name%.tar.gz*}
  tar -zxvf "${current_dir}"/"${tar_name}"
  mv "${current_dir}"/"${tar_dir}" ${directory}/mysql
  if [ ! -d ${data_dir} ];then
    mkdir ${data_dir}
  fi
  echo -e "开始初始化数据库"
  cd ${directory}/mysql && bin/mysqld --initialize --user=mysql --basedir=${directory}/mysql --datadir=${data_dir}
  if [[ $? -eq 0 ]];then
      action "MySQL初始化完毕" /bin/true
      mysql_init_pwd=$(grep "temporary password" ${data_dir}/error.log  |awk -F "[: ]" '{print $NF}')
      echo "MySQL初始化密码为:${mysql_init_pwd}"
      chown -R mysql:mysql ${directory}/mysql
      echo -e "\n"
  else
      action "MySQL初始化失败请查看${data_dir}/error.log日志"  /bin/false
      exit
  fi
}

function powered_up_mysql(){
  cd ${directory}/mysql/support-files && cp mysql.server /etc/init.d/mysql
  sed -i "s#^basedir=.*#basedir=${directory}/mysql#g" /etc/init.d/mysql
  sed -i "s#^datadir=.*#datadir=${data_dir}#g"  /etc/init.d/mysql
  service mysql start
  chkconfig mysql on
}

function login_mysql(){
  if [[ -z ${password} ]];
  then
    password=${mysql_init_pwd}
  fi
  login_mysql="${directory}/mysql/bin/mysql -uroot -p${mysql_init_pwd} --connect-expired-password"
  ${login_mysql} <<EOF
  alter user 'root'@'localhost' identified by '${password}';
  use mysql;
  update user set host='%' where user='root' and host='localhost';
  flush privileges;
EOF
}

function Main(){
  select_installation_directory;
  delete_mariadb;
  check_gcc;
  create_mysql_config;
  add_mysql_user;
  install_mysql;
  powered_up_mysql;
  login_mysql;
}
Main;
相关依赖包下载地址

https://www.sky12580.cn/upload/2022/04/mysql.zip

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用方法
  • install_mysql.sh
  • 相关依赖包下载地址
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档