Centos7 MySql自动安装脚本文件
#!/bin/bash
# author scl
# 准备工作
# 删除原来的mysql
rm -rf `find / -name mysql 2>/dev/null|grep mysql`
# 安装依赖
yum install libaio cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
#关闭防火墙firewalld
service firewalld stop
systemctl disable firewalld
#关闭selinux
#临时关闭selinux
#永久关闭selinux
setenforce 0 # 临时关闭防火墙
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 压缩包存放目录
softPath='/tmp/software'
# mysql安装目录
mysqlPath='/usr/local/mysql'
# mysql bin目录
mysqlBinPath="${mysqlPath}/bin"
# mysql数据库目录
mysqlData="${mysqlPath}/data"
# 判断softPath 是否存在
if [[ !(-d softPath) ]]
then
#不存在,创建目录
mkdir -p ${softPath}
fi
# 如果没有wget,执行 yum install wget -y
# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
defaultMysql="mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz"
if [[ -f $defaultMysql ]]
then
echo "mysql压缩包已经存在"
else
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
fi
mv ${defaultMysql} ${softPath}
cd ${softPath}
rm -rf ${mysqlPath}
# 解压、移动、重名名
tar -zxvf ${defaultMysql}
mv ${defaultMysql%%.tar.gz} ${mysqlPath}
cd ${mysqlPath}
# 创建数据库目录,如果不存在
if [[ !(-d ${mysqlData}) ]];then mkdir -p ${mysqlData};fi
# 添加用户和用户组
groupadd mysql
#添加用户mysql 到用户组mysql(使用-r参数表示mysql用户是一个系统用户,不能登录)
useradd -r -g mysql mysql
#添加完用下面命令测试,能看到mysql用户的信息
echo "测试:" `id mysql`
# 目录权限设置
# 将mysql及其下所有的目录所有者和组均设为mysql
chown -R mysql:mysql ${mysqlPath}
echo "------------mysql config -----------------"
# 配置my.cnf文件,根据需要自定义修改
mv /etc/my.cnf /etc/my.cnf.bak
cat >/etc/my.cnf <<EOF
[mysqld_safe]
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
open_files_limit=8192
innodb_buffer_pool_size=512M
character-set-server=utf8
[mysql]
#自动补全
auto-rehash
#登录进mysql提示符格式
prompt=\\u@\\d \\R:\\m mysql>
EOF
# UNIX socket file don't exists. 目录不存在需要创建
# 创建sock目录 赋予权限
mkdir -p /data/mysql
chmod 760 /data/mysql
echo "---------------------init mysql-------------------"
# 初始化mysql /usr/local/mysql 密码保存在/usr/local/mysql/passwd.txt文件中
${mysqlPath}/bin/mysqld --initialize --user=mysql --basedir=${mysqlPath} --datadir=${mysqlData} &>passwd.txt
#重新修改权限
chown -R root:root ./
chown -R mysql:mysql data/
#修改环境变量,添加我们编译安装的MySQL的可执行命令的路径
echo "PATH=$PATH:"$mysqlBinPath >>/root/.bashrc
source /root/.bashrc
# 处理 Unit mysqld.service could not be found.
#复制mysql提供的启动mysqld服务的脚本到/etc/init.d目录下-->复制mysqld的启动脚本
cp ${mysqlPath}/support-files/mysql.server /etc/init.d/mysqld
修改密码的脚本文件
#!/bin/bash
#启动mysqld服务
systemctl daemon-reload
systemctl start mysql
#设置开机启动MySQL
chkconfig --add mysqld
# 获取临时密码my
tem_passwd=$(cat /usr/local/mysql/passwd.txt |grep "temporary"|awk '{print $NF}')
echo "$tem_passwd"
#初次修改密码需要使用--connect-expired-password 选项
mysql -uroot -p$tem_passwd --connect-expired-password -e "set password='Chenglu123#';"
#验证密码是否设置成功
mysql -uroot -pChenglu123# -e 'show databases;' && echo "database is installed success"
echo "mysql install successful"