Shell | 写了一个一键安装MySQL5.7.29的Shell脚本(CentOS 7)

MySQL5.7.29用的是网易的镜像
GitHub源码地址:https://github.com/jonssonyan/tools
在CentOS7上脚本测试通过,其他版本的系统没有试过

MySQL5.7.29

初始化密码是随机生成的12位,如果想自定义数据库密码请在登录mysql后执行以下命令

SET PASSWORD = PASSWORD('你的密码');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;  

设置远程主机登录,注意下面的your usernameyour password改成你需要设置的用户和密码

GRANT ALL PRIVILEGES ON *.* TO 'your username'@'%' IDENTIFIED BY 'your password' WITH GRANT OPTION;
#!/usr/bin/env bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# Color
red='\033[31m'
green='\033[32m'
yellow='\033[33m'
plain='\033[0m'

get_char() {
    
    
  SAVEDSTTY=$(stty -g)
  stty -echo
  stty cbreak
  dd if=/dev/tty bs=1 count=1 2>/dev/null
  stty -raw
  stty echo
  stty $SAVEDSTTY
}
# 一些说明
clear
echo
echo -e "${yellow}============================================================${plain}"
echo '	System Required: CentOS 7 64位'
echo '	Description: Install MySQL5.7.29'
echo '	Version: 1.0.0'
echo '	Author: Jonsson <[email protected]>'
echo '	Blog: https://blog.csdn.net/y1534414425'
echo '	GitHub: https://github.com/jonssonyan'
echo -e "${yellow}============================================================${plain}"
echo
echo "Press any key to start...or Press Ctrl+C to cancel"
char=$(get_char)
# 判断是否为root用户
[[ $EUID -ne 0 ]] && echo -e "[${red}Error${plain}] This script must be run as root!" && exit 1
filename=$(rpm -qa|grep mariadb | wc -l)
if [ ${
    
    filename -ne 0} ]; then
    rpm -e --nodeps ${
    
    filename} && rm /etc/my.cnf
fi
# 判断MySQL源文件是否下载过
if [ ! -f "./mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz" ]; then
  wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
fi
# 解压MySQL到指定文件夹
mkdir -p /usr/local/mysql && tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql
# 创建mysql用户组和用户并修改权限
groupadd mysql
useradd -r -g mysql mysql
#创建目录赋予权限
mkdir -p /data/mysql && chown mysql:mysql -R /data/mysql
if [ ! -f "/etc/my.cnf" ]; then
  touch /etc/my.cnf
fi
echo "[mysqld]" >>/etc/my.cnf
echo "bind-address=0.0.0.0" >>/etc/my.cnf
echo "port=3306" >>/etc/my.cnf
echo "user=mysql" >>/etc/my.cnf
echo "basedir=/usr/local/mysql/mysql-5.7.29-linux-glibc2.12-x86_64" >>/etc/my.cnf
echo "datadir=/data/mysql" >>/etc/my.cnf
echo "socket=/tmp/mysql.sock" >>/etc/my.cnf
echo "log-error=/data/mysql/mysql.err" >>/etc/my.cnf
echo "pid-file=/data/mysql/mysql.pid" >>/etc/my.cnf
echo "# character config" >>/etc/my.cnf
echo "character_set_server=utf8mb4" >>/etc/my.cnf
echo "symbolic-links=0" >>/etc/my.cnf
echo "explicit_defaults_for_timestamp=true" >>/etc/my.cnf
line=$(rpm -qa | grep libaio | wc -l)
if [ ${
    
    line} -eq 0 ]; then
  yum install libaio-devel.x86_64
fi
# 初始化数据库
cd /usr/local/mysql/mysql-5.7.29-linux-glibc2.12-x86_64/bin/ && chown -R mysql:mysql ./ && ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/mysql-5.7.29-linux-glibc2.12-x86_64/ --datadir=/data/mysql/ --user=mysql --initialize
str=$(cat /data/mysql/mysql.err | awk 'END {print}')
pwd=${
    
    str:0-12}
cp /usr/local/mysql/mysql-5.7.29-linux-glibc2.12-x86_64/support-files/mysql.server /etc/init.d/mysql
# 添加MySQL到环境变量
chmod 700 /etc/profile
echo '#MySQL Env' >>/etc/profile
echo 'export PATH=$PATH:/usr/local/mysql/mysql-5.7.29-linux-glibc2.12-x86_64/bin' >>/etc/profile
source /etc/profile
mkdir /var/log/mariadb && touch /var/log/mariadb/mariadb.log && chown -R mysql:mysql /var/log/mariadb/
service mysql start
if [ $? -eq 0 ]; then
  echo -e "${yellow}============================================================${plain}"
  echo -e "${green}MySQL5.7.29安装成功${plain}"
  echo -e "${green}数据库初始密码为:${plain}${red}${pwd}${plain}${green}(请妥善保存密码或者及时修改)${plain}"
  echo -e "${yellow}============================================================${plain}"
else
  echo -e "${yellow}============================================================${plain}"
  echo -e "${red}MySQL5.7.29安装失败,请检查你的配置${plain}"
  echo -e "${yellow}============================================================${plain}"
fi

猜你喜欢

转载自blog.csdn.net/y1534414425/article/details/106499072