环境:centos7 版本:8.0.28 安装包:mysql -8.0.28-linux -glibc2.12-x86_64.tar.xz 二进制包 要求:安装包和shell脚本在同一目录下 执行方式:sudo ./install_mysql 8.sh
#!/bin/bash MYSQL_DIR = "/usr/local/mysql -8.0.28-linux -glibc2.12-x86_64" MYSQL_TAR = "mysql -8.0.28-linux -glibc2.12-x86_64.tar.xz" if [ ! -d "$MYSQL_DIR " ] ; then echo "正在解压MySQL安装包..." tar -xvf "$MYSQL_TAR " -C /usr/local/ln -s "$MYSQL_DIR " /usr/local/mysql else echo "MySQL安装包已存在,跳过解压。" fi if ! id -u mysql > /dev/null 2 >&1 ; then echo "正在创建MySQL用户和组..." groupadd mysql useradd -r -g mysql -s /bin/false mysql else echo "MySQL用户已存在,跳过创建。" fi if [ ! -f /etc/mysql /my.cnf ] ; then echo "正在创建MySQL配置文件..." mkdir -p /etc/mysql cat > /etc/mysql /my.cnf << EOF[client]socket=/var/lib/mysql /mysql .sock[mysql ]prompt=(\\ u@\\ h) [\\ d]>\\ _ # 更改MySQL客户端命令>前面显示内容[mysql d]port=3306user=mysql socket=/var/lib/mysql /mysql .sockdatadir=/usr/local/mysql /datalog_error=error.logEOF else echo "MySQL配置文件已存在,跳过创建。" fi if [ ! -d /usr/local/mysql /data ] ; then echo "正在初始化MySQL数据库..." cd /usr/local/mysql mkdir -p mysql -fileschown mysql :mysql mysql -fileschmod 750 mysql -filesbin/mysql d --initialize --user = mysql echo "等待MySQL生成临时密码..." for i in { 1 .. 30 } ; do if [ -f /usr/local/mysql /data/error.log ] ; then temp_password = $( grep 'temporary password' /usr/local/mysql /data/error.log | awk '{print $NF}' ) if [ -n "$temp_password " ] ; then echo "MySQL临时密码: $temp_password " break fi fi sleep 1 done if [ -z "$temp_password " ] ; then echo "无法获取MySQL临时密码,请检查/usr/local/mysql /data/error.log" exit 1 fi else echo "MySQL数据目录已存在,跳过初始化。" fi if [ ! -f /etc/systemd/system/mysql d.service ] ; then echo "正在创建systemd服务文件..." cat > /etc/systemd/system/mysql d.service << EOF[Unit]Description=MySQL ServerAfter=network.target[Service]User=mysql Group=mysql ExecStart=/usr/local/mysql /bin/mysql d --defaults-file=/etc/mysql /my.cnfExecStop=/usr/local/mysql /bin/mysql admin shutdownRestart=on-failure[Install]WantedBy=multi-user.targetEOF else echo "systemd服务文件已存在,跳过创建。" fi if [ ! -d /var/lib/mysql / ] ; then mkdir /var/lib/mysql /chown -R mysql :mysql /var/lib/mysql chmod 750 /var/lib/mysql else echo "/var/lib/mysql 目录已存在,跳过创建。" fi systemctl daemon-reloadsystemctl start mysql dsystemctl enable mysql dif ! grep -q '/usr/local/mysql /bin' /etc/profile; then echo 'export PATH=$PATH:/usr/local/mysql /bin' >> /etc/profileexport PATH = $PATH :/usr/local/mysql /binecho "环境变量已添加到 /etc/profile 并立即生效。" echo "如需全局生效,请手动执行以下命令:" echo "source /etc/profile" else echo "环境变量已配置,跳过。" fi if mysql --version > /dev/null 2 >&1 ; then echo "MySQL 8 安装成功!" else echo "MySQL 安装失败,请检查日志。" exit 1 fi