mysql二进制安装脚本部署
单实例
[root@localhost ~]# mkdir mysql //创建存放脚本目录
[root@localhost ~]# ls
anaconda-ks.cfg mysql
[root@localhost ~]# cd mysql/
[root@localhost mysql]# mkdir files //创建安装包目录
[root@localhost mysql]# ls
files
[root@localhost mysql]# ls files/
mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
[root@localhost mysql]# touch mysql_install.sh //创建脚本文件
[root@localhost mysql]# chmod +x mysql_install.sh //赋予执行权限
[root@localhost mysql]# ll
total 0
drwxr-xr-x. 2 root root 56 Sep 19 21:16 files
-rwxr-xr-x. 1 root root 0 Sep 19 21:18 mysql_install.sh
[root@localhost mysql]# vim mysql_install.sh
[root@localhost mysql]# cat mysql_install.sh
#!/bin/bash
#设置执行权限
if [ $UID -ne 0 ];then
echo "请以管理员用户进行执行"
exit
fi
read -p "请输入要创建的实例个数: " count
read -p "请输入数据存放目录(默认路径: /opt/xbz): " datadir
read -p "请输入要为数据库设置的密码: " passwd
read -p "请输入安装目录,(默认路径:/usr/local/mysql):" mysql_install_dir
#判断安装目录合法性
echo $mysql_install_dir | grep -E '^/[a-z][a-z]*(/[a-z][a-z]*)*$' &> /dev/null
if [ $? -eq 0 ];then
if [ ! -d $mysql_install_dir ];then
mkdir -p $mysql_install_dir
fi
else
mysql_install_dir=/usr/local/mysql
fi
#判断安装目录是否为空
if [ -z $mysql_install_dir ];then
mysql_install_dir=/usr/local/mysql
fi
#创建用户
id mysql &> /dev/null
if [ $? -ne 0 ];then
useradd -r -M -s /sbin/nologin mysql
else
echo "用户已存在"
fi
#安装依赖包
dnf -y install ncurses-compat-libs --allowerasing
#解压软件包,修改目录和所属组
if [ ! -d $mysql_install_dir ];then
echo "解压软件包"
tar xf files/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local
cd /usr/local
mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql
fi
chown -R mysql.mysql ${mysql_install_dir}
#设置环境变量
echo 'export PATH=${mysql_install_dir}/lib' > /etc/ld.so.conf.d/mysql.conf
#做头文件
ln -s ${mysql_install_dir}/include /usr/include/mysql
#配置lib
echo '${mysql_install_dir}/lib' > /etc/ld.so.conf.d/mysql.conf
ldconfig
#设置man文档
grep '${mysql_install_dir}/man' /etc/man_db.conf &> /dev/null
if [ $? -ne 0 ];then
sed -i "22a MANDATORY_MANPATH ${mysql_install_dir}/man" /etc/man_db.conf
fi
#建立数据存放目录
for i in $(seq $count);do
if [ $count -eq 1 ];then
if [ -z $datadir ];then
datadir=/opt/xbz
fi
if [ ! -d $datadir ];then
mkdir -p $datadir
fi
chown -R mysql.mysql $datadir
${mysql_install_dir}/bin/mysqld --initialize --user mysql --datadir $datadir &> /tmp/passwd
#生成数据配置文件
cat > /etc/my.cnf << EOF
[mysqld]
basedir = ${mysql_install_dir}
datadir = $datadir
socket = /tmp/mysql.sock
port = 3306
pid-file = $datadir/mysql.pid
user = mysql
skip-name-resolve
EOF
#配置服务启动脚本
if [ ! -f /etc/init.d/mysqld ];then
cp -a ${mysql_install_dir}/support-files/mysql.server /etc/init.d/mysqld
sed -ri '/^basedir=/c basedir=${mysql_install_dir}' /etc/init.d/mysqld
sed -ri "/^datadir=/c datadir=$datadir" /etc/init.d/mysqld
fi
chmod +x /etc/init.d/mysqld
#启动mysql并设置开机自启
service mysqld start
sleep 6
chkconfig --add mysqld
ln -s ${mysql_install_dir}/bin/mysql /usr/bin
password=$(grep 'password' /tmp/passwd |awk '{print $NF}')
mysql -uroot -p$password --connect-expired-password -e "set password = password('$passwd');"
echo "数据库的密码是: $passwd"
fi
done
验证:
[root@