«
mysql安装脚本

时间:2021-10-13     作者:李泽信     分类: shell


#!/bin/bash
#脚本执行方式:bash yum_install_mysql.sh  
#脚本仅支持5.5  5.6  5.7  8.0  这几个版本的MySQL

echo "此脚本用于yum 安装mysql"
if [[ $UID -ne 0 ]];then
    echo "使用root 执行此脚本"
    exit 1
fi
#if [[ $# != 1 ]];then
#    echo "Usage script (5.5|5.6|5.7|8.0)"
#    exit 123
#fi
#开始菜单,界面输入参数
read -p "请输入MSYQL版本号(仅支持5.5|5.6|5.7|8.0安装):" mysqlversion
echo -e "MQ安装版本:Mysql$mysqlversion\n"
read -p "请输入mqsql安装目录名(如:/data/mysql):" mysqlpath
echo -e "MQ部署路径:$mysqlpath\n"
read -p "请按[Enter]键开始安装MYSQL程序" een
echo "清理环境"
rm -f /var/run/yum.pid
systemctl stop mysqld mariadb &>/dev/null
yum erase -y `rpm -qa |grep mariadb` 2>/dev/null
yum erase -y `rpm -qa |grep mysql`  2>/dev/null
rm -rvf /etc/my.cnf /var/lib/mysql /var/log/mysql* $mysqlpath
userdel -rf mysql &>/dev/null
ping -c1 -w1 www.baidu.com &>/dev/null
if [[ $? -eq 0 ]];then
    yum install -y wget yum-utils &>/dev/null
    if [[ $? -ne 0 ]];then
        echo "yum 配置错误"
        exit 110
    fi
    wget -O ./mysql8.0.rpm https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
    yum install -y mysql8.0.rpm
    yum clean all
    yum makecache fast
else
    echo "网络错误"
    exit 22
fi

case $mysqlversion in
5.5)
        yum-config-manager  --disable mysql80-community
        yum-config-manager  --enable mysql55-community
        yum -y install mysql-community-server
;;
5.6)
    yum-config-manager  --disable mysql80-community
    yum-config-manager  --enable mysql56-community
    yum -y install mysql-community-server
;;
5.7)
    yum-config-manager  --disable mysql80-community
    yum-config-manager  --enable mysql57-community
    yum install -y mysql-community-server
;;
8.0)
    yum install -y mysql-community-server
;;
*)
    yum repolist all |grep mysql
    echo "其他版本可自行选择下载并配置"
    exit 13
;;
esac
systemctl start mysqld
echo "Mysql Yum安装完成"
#将mysql数据目录转移
systemctl stop mysqld
mv /var/lib/mysql $mysqlpath
usermod -d /data/mysql mysql
echo "Mysql迁移至data目录完成"
sed -i -r -e '/^datadir\=/c \datadir=/data/mysql' /etc/my.cnf
sed -i -r -e "/^socket\=/c \socket=$mysqlpath/mysql.sock" /etc/my.cnf
sed -i -r -e '3i \\n[client]' /etc/my.cnf
sed -i -r -e "5i \socket=$mysqlpath/mysql.sock\n" /etc/my.cnf
echo -e "\n# Master 1" >> /etc/my.cnf
echo -e "server_id = 1" >> /etc/my.cnf
echo -e "default_storage_engine = innodb" >> /etc/my.cnf
echo -e "character-set-server = utf8" >> /etc/my.cnf
echo -e "sql_mode = \"STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"" >> /etc/my.cnf
echo -e "binlog-ignore-db = mysql" >> /etc/my.cnf
echo -e "binlog-ignore-db = information_schema" >> /etc/my.cnf
echo -e "log-bin = mysql-bin" >> /etc/my.cnf
echo -e "max_allowed_packet = 1G" >> /etc/my.cnf
echo -e "max_connections = 5000" >> /etc/my.cnf
echo -e "max_connect_errors = 1000" >> /etc/my.cnf
echo -e "open_files_limit = 65535" >> /etc/my.cnf
echo -e "table_open_cache = 256" >> /etc/my.cnf
echo -e "tmp_table_size = 1000M" >> /etc/my.cnf
echo -e "read_rnd_buffer_size = 32M" >> /etc/my.cnf
echo -e "sort_buffer_size = 32M" >> /etc/my.cnf
echo -e "join_buffer_size = 128M" >> /etc/my.cnf

systemctl start mysqld
echo "启动成功,初始密码如下(mysql5.7前版本没有初始密码)"
grep -o 'root@localhost.*' /var/log/mysqld.log
echo "my.conf配置完成"
sed -i -r -e '12i \-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT' /etc/sysconfig/iptables
systemctl restart iptables.service
echo "iptables防火墙3306端口配置完成"
echo "MYSQL安装脚本完成"
echo "MYSQL部署路径:$mysqlpath"
echo "MYSQL初始密码如下(mysql5.7前版本没有初始密码):"
grep -o 'root@localhost.*' /var/log/mysqld.log
echo "MYSQL登录命令:mysql -uroot -p"
echo "MYSQL登录后修改密码命令:set password for 'root'@'localhost' = password('此处修改密码');"
echo "MYSQL登录后对所有IP授权登录密码:GRANT ALL PRIVILEGES ON *.* TO root@\"%\" IDENTIFIED BY \"此处填写密码\";"