欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Linux系统管理与编程21:一键部署MySQL

Linux系统管理与编程21:一键部署MySQL

2025/5/23 0:56:02 来源:https://blog.csdn.net/wusam/article/details/148102665  浏览:    关键词:Linux系统管理与编程21:一键部署MySQL
兰生幽谷,不为莫服而不芳;
君子行义,不为莫知而止休。

1  准备工作

1.1 下载mysql-boost-5.7.20.tar.gz

1.2 插入光盘

图21-1虚拟机光盘设置

2 编写脚本

#!/bin/bash

#-----------------------------------------------------------

# File Name: mysql5720Auto2.sh

# Version: 1.0

# Created: 2025-05-18 22:27:20

# Author:  网工xxx

# Contact:  QQ15523232551

# Copyright(R):CQIE

# Description:

#先决条件:1.插入帮盘,

#                  2.永久挂载至/mnt

#                  3.mysql-boost-5.7.20.tar.gz安装包置于/opt

#脚本自动部署yum源

#===========================================================

# 我色彩斑斓的化妆盒

RED='\033[31m'

GREEN='\033[32m'

YELLOW='\033[43m'

BLUE='\033[94m'

RedBlink="\e[5;31m"     #5是闪烁,31m是红色

UL='\033[4m'          #下划线::

RESET='\033[0m'       #复位

# 检查是否为root用户

if [ "$(id -u)" -ne 0 ]; then

    echo "请使用root用户运行此脚本"

    exit 1

fi

# 检查/mnt目录是否存在

if [ ! -d "/mnt" ]; then

    mkdir /mnt

    echo "已创建/mnt目录"

fi

# 检查fstab中是否已有光盘挂载配置

if grep -q "/dev/cdrom" /etc/fstab; then

    echo "fstab中已存在光盘挂载配置,将进行更新"

    sed -i '/\/dev\/cdrom/d' /etc/fstab

fi

# 添加新的挂载配置

echo "/dev/cdrom /mnt iso9660 defaults 0 0" >> /etc/fstab

mount -a

# 验证配置

echo -e "${BLUE}看看,挂载上去了?${RESET}"

lsblk

CKGZ=`df -Th | grep -o "iso9660"`

ZDGZ=`cat /etc/fstab | grep -o "iso9660"`

#检查光盘是否挂载

if [ "$CKGZ" == 'iso9660' ];then

        echo "您的挂盘已经挂载,无需重复操作!"

else

        echo "正在为您挂载光盘……"

        mount  /dev/sr0  /mnt &> /dev/null

        echo "已为您挂载挂载光盘!"

fi

if [ "$ZDGZ" == 'iso9660' ];then

        echo "您的光盘已设置自动挂载,无需重复操作!"

else

        echo "正在为您设置自动挂载……"

        echo "/dev/sr0 /mnt iso9660 defaults 0 0 ">>/etc/fstab

        echo "已为您设置自动挂载。"

fi

echo "正在配置yum源中"

ping -c5 www.baidu.com &> /dev/null

if [ $? -eq 0 ];then

        mkdir -p /etc/yum.repos.d/repo.bak

        mv  -f /etc/yum.repos.d/* /etc/yum.repos.d/repo.bak &> /dev/null

        wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null&> /dev/null

        "yum clean all && yum makecache" &> /dev/null

        yum list &> /dev/null

        echo "在线yum源已配置完成!"

else

        mkdir -p /etc/yum.repos.d/repo.bak

        mv -f /etc/yum.repos.d/* /etc/yum.repos.d/repo.bak &> /dev/null

        echo -e '[local]\nname=local\nbaseurl=file:///mnt\nenabled=1\ngpgcheck=0' > /etc/yum.repos.d/local.repo

        "yum clean all && yum makecache" &> /dev/null

        yum list &> /dev/null

        echo "本地yum源已配置完成!"

fi

#环境准备

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

echo -e "正在检查安装包是否正确"

ls /opt | egrep "^mysql-boost-5.7.20.tar.gz$"

if [ $? -eq 0 ];then

echo -e "准备安装,请等待"

else

echo -e "请准备正确安装包:mysql-boost-5.7.20.tar.gz"

exit

fi

#安装依赖包

yum -y install tar gcc gcc-c++ ncurses ncurses-devel bison cmake  &>/dev/null

if [ $? -eq 0 ];then

echo -e "依赖包安装完毕"

else

exit

echo -e "依赖包安装失败,请检查"

fi

#创建用户

useradd -M -s /sbin/nologin  mysql

#解压安装包

cd /opt

tar xzvf mysql-boost-5.7.20.tar.gz -C /opt &>/dev/null

if [ $? -eq 0 ];then

echo -e "安装包解压完毕"

else

exit

echo -e "安装包解压失败,请检查"

fi

#安装模块

cd /opt/mysql-5.7.20/

cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \

-DSYSCONFDIR=/etc \

-DSYSTEMD_PID_DIR=/usr/local/mysql \

-DDEFAULT_CHARSET=utf8  \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DWITH_BOOST=boost \

-DWITH_SYSTEMD=1 &>/dev/null

if [ $? -eq 0 ];then

echo -e "${GREEN}模块安装完毕${RESET}"

else

exit

echo -e "${RED}模块安装失败,请检查${RESET}"

fi

echo -e "${GREEN}下面开始编译安装,大概需要半个小时以上,喝杯水吧……${RESET}"

#编译及安装

make && make install

#修改mysql 配置文件

echo '[client]

port = 3306

socket=/usr/local/mysql/mysql.sock

[mysqld]

user = mysql

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

port = 3306

character-set-server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket=/usr/local/mysql/mysql.sock

bind-address = 0.0.0.0

skip-name-resolve

max_connections=2048

default-storage-engine=INNODB

max_allowed_packet=16M

server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES' > /etc/my.cnf

#更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/

chown mysql:mysql /etc/my.cnf

#设置路径环境变量

echo "export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib">> /etc/profile

source /etc/profile

#初始化数据库

cd /usr/local/mysql/bin/

./mysqld \

--initialize-insecure \

--user=mysql \

--basedir=/usr/local/mysql \

--datadir=/usr/local/mysql/data

#添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

systemctl daemon-reload

systemctl start mysqld.service

netstat -natp | grep 3306

if [ $? -eq 0 ];then

echo -e "阿门,终于启动服务成功!"

else

exit

echo -e "服务启动失败,请检查"

fi

图21-2启动成功了

图21-3登录试一下

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词