一键安装|卸载 mysql 8.2.0 shell脚本

本文介绍了如何编写shell脚本在无网络连接情况下安装MySQL8.2.0,包括下载二进制包、配置环境、初始化数据库、创建服务以及提供了一个用于卸载MySQL的shell脚本。

场景:为了在无网、外网 mysql 安装方便,这里分享一个自己编写得 shell脚本

  • 这里以当前最新版 mysql 8.2.0centos-7

二进制包下载:
下载地址
在这里插入图片描述

mysql_install.sh

#!/bin/bash

MYSQL_PORT=${1:-3306}  # 默认端口3306
MYSQL_ROOT_PASSWORD=${2:-"SQLplus730.."}  # 默认root密码
ALLOWED_HOST=${3:-"%"} # root用户可访问ip端 % 为远程所有ip连接; 192.168.1.%- 为允许192.168.1.*网段

# 解压安装包
tar -xf mysql-8.2.0-linux-glibc2.17-x86_64.tar.xz

# 移动解压后的文件夹到指定位置
mv mysql-8.2.0-linux-glibc2.17-x86_64 /usr/local/mysql

# 创建MySQL数据目录
mkdir -p /var/lib/mysql

# 创建MySQL组和用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 修改文件夹权限
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /var/lib/mysql

# 创建MySQL配置文件
cat > /usr/local/mysql/my.cnf << EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/var/lib/mysql
server_id=1 
port=$MYSQL_PORT
socket=/var/lib/mysql/mysql.sock 

[mysql]
default-character-set=utf8mb4
socket=/tmp/mysql.sock

[client]
port=$MYSQL_PORT
socket=/var/lib/mysql/mysql.sock

EOF

# 初始化MySQL
cd /usr/local/mysql
./bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize-insecure --user=mysql

# 创建MySQL服务
cat > /etc/systemd/system/mysql.service <<EOF
[Unit]
Description=MySQL 8.2.0 Server
After=syslog.target network.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=simple
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
LimitNOFILE=5000
Restart=on-failure
RestartSec=5s
PrivateTmp=true
EOF

# 启动MySQL服务并设置开机启动
systemctl daemon-reload
systemctl start mysql
systemctl enable mysql


# 定义源文件和链接路径
SOCKET_SRC="/var/lib/mysql/mysql.sock"
SOCKET_LINK="/tmp/mysql.sock"
MAX_WAIT=60  # 最大等待秒数

# 检查MySQL服务状态
check_mysql_service() {
    if ! systemctl is-active --quiet mysql; then
        echo "MySQL服务未运行,尝试启动..."
        systemctl start mysql || { echo "启动MySQL服务失败"; exit 1; }
    fi
    
    local waited=0
    while [ ! -S "$SOCKET_SRC" ] && [ $waited -lt $MAX_WAIT ]; do
        sleep 1
        ((waited++))
        echo "等待socket文件生成($waited/$MAX_WAIT)..."
    done
    
    [ -S "$SOCKET_SRC" ] || { echo "超时:未检测到socket文件"; exit 1; }
}

# 主流程
check_mysql_service

if [ ! -L "$SOCKET_LINK" ] || [ ! -e "$SOCKET_LINK" ]; then
    echo "正在创建软连接 $SOCKET_LINK -> $SOCKET_SRC"
    ln -sf "$SOCKET_SRC" "$SOCKET_LINK"
    chown mysql:mysql "$SOCKET_LINK" 2>/dev/null
    echo "软连接创建成功"
else
    echo "软连接已存在且有效:$(ls -l $SOCKET_LINK)"
fi

#设置软连接
sudo ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

echo "开始设置root用户"

# 设置root密码和远程访问
/usr/local/mysql/bin/mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';"
/usr/local/mysql/bin/mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "update mysql.user set host='$ALLOWED_HOST' where user='root';"
/usr/local/mysql/bin/mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "FLUSH PRIVILEGES;"

echo "设置成功"


2

  • 环境变量配置:

mysql_remove.sh

#!/bin/bash
#!/bin/bash

# 停止mysql服务
sudo systemctl stop mysql

# 删除mysql用户组
sudo userdel mysql
sudo groupdel mysql


# 删除mysql服务配置
sudo systemctl disable mysql
sudo rm /etc/systemd/system/mysql.service

# 删除数据文件
sudo rm -rf /var/lib/mysql

# 删除mysql二进制文件
sudo rm -rf /usr/local/mysql

# 删除软连接
sudo rm -rf /tmp/mysql.sock
sudo rm -rf /usr/local/bin/mysql

echo "mysql已成功卸载!"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值