基于CentOS-7自动安装MySQL-5.7.30本地版

前言: 

    本文旨在自动化安装本地版MySQL数据库,仅涉及my.cnf的基础配置,满足正常使用需求,如有其他使用需求还请自行添加;本文亦不涉及虚拟机的安装操作,还请读者自行查阅。

    本文代码的环境是centos7,笔者在centos8中执行过,同样是可行的,但未经过多次测试验证。

    本文所使用的mysql安装包是5.7.30版本,笔者亦尝试过mysql-5.7.xx的其他版本,仍然有效。

安装步骤:

    1、使用root账户安装;

    2、本文暂未考虑mysql正在运行,或是之前安装没有卸载干净;

    3、删除centos7自带的mariadb包;

#!/bin/sh

#安装mysql 5.7、基于centos7系统
#先删除centos系统中存在的mariadb的依赖包

if [ ! -z "`rpm -qa|grep -i mariadb`" ]; then
   for i in `rpm -qa|grep -i mariadb`
   do 
      rpm -e --nodeps $i
   done
else
   echo "系统中不存在mysql的依赖包!"
fi

echo "继续执行安装程序"



    4、定位mysql安装包的位置:需要自己输入mysql的包位于哪个路径下

echo "定义mysql的tar包的位置"

#mysql的安装以mysql-5.7.30为例子,如其他版本可改下列代码

read -p "请输入mysql-xxx.tar.gz的位置(使用绝对路径/xx/xx):" mysql_tar
#判断此路径下mysql的安装包是否存在
if [ -e $mysql_tar/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz ]; then
   echo "成功找到mysql安装包!"
else 
   echo "此路径下不存在mysql的包,请检查后重新启用该程序"
   exit 1
fi

    5、定位mysql安装位置:需要自己定义mysql要安装在哪个目录下


echo "定义mysql要安装的位置"
#给循环的判断点赋值,使其进入到循环之中
res_2=n
#开始循环
until [  "$res_2" == "y" -o "$res_2" == "Y" ] 
do
#给循环的判断点赋值,使其进入到循环之中,所赋值的目录必须是不存在的
mysql_install="not_such_dirctory"

  until [ -d $mysql_install ]
  do
    read -p "请输入绝对路径(/xxx/xxx/xx):" mysql_install
    if [ ! -d $mysql_install ]; then
      echo "您输入的路径不存在"
      read -p "您需要创建此路径么(y/n):" res_1
        if [ "$res_1" == "y" -o "$res_1" == "Y" ]; then
             echo "创建目录"
             mkdir -p $mysql_install
             #已经选择了创建目录,就不需要在询问是否安装在此路径了,故跳出外部循环直接下一步操作
             break 2
        elif [ "$res_1" == "n" -o "$res_1" == "N" ]; then
             echo "请核对你要输入的路径"
        else
             echo "输入有误!"
        fi
    fi
  done
   echo "您要将mysql安装到# $mysql_install 目录下么"
   read -p "再次确认您输入的路径是否正确(y/n) :" res_2
done

     6、安装mysql:解压安装创建用户,配置my.cnf文件

#找到了mysql的安装包,并定义的mysql的安装路径

#解压mysql安装包

tar -zxvf $mysql_tar/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C $mysql_install/
#重命名mysql

mv $mysql_install/mysql-5.7.30-linux-glibc2.12-x86_64 $mysql_install/mysql

result_00=$?
if [ ! $result_00 -eq 0 ]; then 
   echo "处理失败,请检查错误原因,重新执行"
   exit 1
fi
#创建mysqldata文件夹
mkdir -p $mysql_install/mysql/data
#创建mysql日志目录
if [ -e /var/log/mysql/ ]; then 
   rm -rf /var/log/mysql/
fi
mkdir -p /var/log/mysql

#创建mysql用户及mysql组

mysql_user=`grep 'mysql' /etc/passwd`
mysql_group=`grep 'mysql' /etc/group`

if [ ! -z "mysql_user" ]; then
   killall mysql 
   userdel mysql
fi

if [ ! -z "mysql_group" ]; then
   groupdel mysql
fi

groupadd mysql
useradd -r -g mysql mysql




#授权mysql目录
chown -R mysql:mysql $mysql_install/mysql
chown -R mysql:mysql /var/log/mysql

#编写mysql配置文件 my.cnf

echo "
[mysqld]
basedir=$mysql_install/mysql
datadir=$mysql_install/mysql/data
port=3306
character-set-server=utf8
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
log-error=/var/log/mysql/mysql.log
" > /etc/my.cnf

    7、 初始化mysql:

#mysql初始化配置
cd $mysql_install/mysql/bin 

./mysqld --user=mysql --initialize --basedir=$mysql_install/mysql --datadir=$mysql_install/mysql/data

result_02=$?

if [ ! $result_02 -eq 0 ]; then
   echo "mysql初始化失败,请检查失败原因"
   exit 1
fi

#启动mysql服务并添加开机启动

cp $mysql_install/mysql/support-files/mysql.server /etc/init.d/mysqld

cd /etc/init.d/

chkconfig --add mysqld

service mysqld start

     8、获取mysql密码,并修改mysql的root登录密码;

#获取mysql的密码
pswd_file=`grep -i "A temporary password" /var/log/mysql/mysql.log`
for x in $pswd_file
do 
   echo $x 
done > $mysql_install/mysql/tmp.pwd

x=`tail -1 $mysql_install/mysql/tmp.pwd`
echo "mysql的初始密码是:$x"
echo "稍后请自行修改mysql密码"

rm -f $mysql_install/mysql/tmp.pwd

#进入mysql 修改初始密码 命令为 set password=password('new_password');

    9、mysql安装完毕,配置环境变量,环境变量在/etc/profile 文件 编辑此文件 

         vi /etc/profile 
         export MYSQL_HOME=$mysql_install(mysql的安装路径:绝对路径)/mysql
         export PATH=$PATH:$MYSQL_HOME/bin
         至此环境变量配置结束
         环境变量即刻生效

         source /etc/profile

小节:

    以上代码全部复制粘贴形成一个.sh文件,准备好mysql在centos之中执行即可完成自动化安装。

    笔者水平有限,安装方式方法或存在某些问题;笔者借此文章抛砖引玉,也希望各位大佬指点,相互交流,不胜感激。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值