Shell | Wrote a Shell script to install MySQL 5.7.29 with one click (CentOS 7)

MySQL5.7.29 uses NetEase's mirrored
GitHub source code address: https://github.com/jonssonyan/tools
the script test passed on CentOS7, other versions of the system have not been tried

MySQL5.7.29

The initial password is randomly generated 12 digits. If you want to customize the database password, please execute the following command after logging in to mysql

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

Setting remote login, pay attention to the following your usernameand your passworduser and password change you need to set

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

Guess you like

Origin blog.csdn.net/y1534414425/article/details/106499072