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 username
和 your 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