一键安装mysql

a 夏天 提交于 2019-11-26 17:35:59

  本文实现了mysql8.x版本(下载)在centos7.x操作系统下的一键安装,将文中代码复制到脚本文件,例如install-mysql.sh,将脚本文件与mysql-8.0.17-el7-x86_64.tar.gz放在同一目录下,执行sh install-mysql.sh即可,代码如下:

#! /bin/bash
config(){
  echo "**************初始化数据"
  mysql_bin="/usr/local/mysql/bin"
  mysql_sock="/opt/apps/tmp/mysql/mysql.sock"
  param="-h127.0.0.1 -uroot -proot"
  #将root的密码设置为root
  $mysql_bin/mysqladmin -S $mysql_sock -u root password 'root' 2>/dev/null
  #设置编码为UTF8
  $mysql_bin/mysql -S $mysql_sock $param -e"SET character_set_client = utf8" 2>/dev/null
  $mysql_bin/mysql -S $mysql_sock $param -e"SET character_set_connection = utf8" 2>/dev/null
  $mysql_bin/mysql -S $mysql_sock $param -e"SET character_set_database = utf8" 2>/dev/null
  $mysql_bin/mysql -S $mysql_sock $param -e"SET character_set_results = utf8" 2>/dev/null
  $mysql_bin/mysql -S $mysql_sock $param -e"SET character_set_server = utf8" 2>/dev/null
  #设置时区
  $mysql_bin/mysql -S $mysql_sock $param -e"set global time_zone=\"+8:00\"" 2>/dev/null
  $mysql_bin/mysql -S $mysql_sock $param -e"FLUSH PRIVILEGES" 2>/dev/null
}
install(){
  echo "**************安装mysql"
  #判断存在mysql进程,存在则关闭
  if [[ 2 -gt `ps -ef|grep mysql|wc -l` ]];then
      echo " "
  else
      echo "**************关闭mysql"
      `ps -ef|grep mysql|grep -v 'grep'|awk '{print $2}'|xargs kill -9` 2>/dev/null
  fi
  #卸载系统自带mysql  
  rpm -e --nodeps  `rpm -qa|grep mysql`
  #配置文件所在目录
  my_cnf="/etc/my.cnf"
  #将解压后的mysql复制到/usr/local,也可以选择移动
  cp -r mysql /usr/local/
  echo "[mysqld]" >$my_cnf
  echo "server-id = 1" >>$my_cnf
  echo "port = 3306" >>$my_cnf
  echo "mysqlx_port  = 33060" >>$my_cnf
  echo "mysqlx_socket  = /opt/apps/tmp/mysql/mysqlx.sock" >>$my_cnf
  echo "datadir  = /opt/apps/data/mysqldata" >>$my_cnf
  echo "socket = /opt/apps/tmp/mysql/mysql.sock" >>$my_cnf
  echo "pid-file = /opt/apps/tmp/mysql/mysqld.pid" >>$my_cnf
  echo "log-error = error.log" >>$my_cnf
  echo "slow-query-log = 1" >>$my_cnf
  echo "slow-query-log-file  = slow.log" >>$my_cnf
  echo "long_query_time = 0.2" >>$my_cnf
  echo "log-bin  = bin.log" >>$my_cnf
  echo "relay-log = relay.log" >>$my_cnf
  echo "binlog_format =ROW" >>$my_cnf
  echo "relay_log_recovery  = 1" >>$my_cnf
  echo "character-set-client-handshake = FALSE" >>$my_cnf
  echo "character-set-server = utf8mb4" >>$my_cnf
  echo "collation-server  = utf8mb4_unicode_ci" >>$my_cnf
  echo "init_connect ='SET NAMES utf8mb4'" >>$my_cnf
  echo "innodb_buffer_pool_size = 1G" >>$my_cnf
  echo "join_buffer_size  = 128M" >>$my_cnf
  echo "sort_buffer_size  = 2M" >>$my_cnf
  echo "read_rnd_buffer_size = 2M" >>$my_cnf
  echo "log_timestamps = SYSTEM" >>$my_cnf
  echo "lower_case_table_names  = 1" >>$my_cnf
  echo "default-authentication-plugin = mysql_native_password" >>$my_cnf
  echo "default-time-zone = '+8:00'" >>$my_cnf
  usergroup="mysql : mysql"
  groupadd -f mysql
  isusergroup=`groups mysql`
  #判断是否存在mysql用户
  if [ "$usergroup" = "$isusergroup" ];then
        echo "**************mysql用户已经在mysql组"
    else
        echo "**************添加mysql用户到mysql组"
        useradd mysql -g mysql
  fi 
  rm -rf /opt/apps/tmp/mysql
  rm -rf /opt/apps/data/mysqldata
  #配置mysql临时目录,防治在/tmp目录下被清理
  mkdir -p /opt/apps/tmp/mysql
  #配置数据目录,也可以改
  mkdir -p /opt/apps/data/mysqldata
  chown -R mysql:mysql /opt/apps/data/mysqldata
  chown -R mysql:mysql /opt/apps/tmp/mysql
  chmod -R 775 /opt/apps/data/mysqldata
  chmod -R 775 /usr/local/mysql
  /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/opt/apps/data/mysqldata --initialize-insecure
  cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql
  /etc/init.d/mysql start
  config
}
if [[ ! -d "/opt/apps/mysql" ]];then
  echo "**************解压mysql"
  tar -zxf mysql-8.0.17-el7-x86_64.tar.gz
  mv mysql-8.0.17-el7-x86_64.tar.gz  mysql
fi
if [[ ! -d "/usr/local/mysql" ]];then
    install
    else
    echo "**************检查到mysql已经安装,跳过"
fiinstall

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!