前言:
本文旨在自动化安装本地版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之中执行即可完成自动化安装。
笔者水平有限,安装方式方法或存在某些问题;笔者借此文章抛砖引玉,也希望各位大佬指点,相互交流,不胜感激。