Skip to content

MySQL之一键安装MySQL8.2

脚本内容

shell
#!/usr/bin/env bash
# mysql二进制下载地址:https://downloads.mysql.com/archives/community/
# Product Version:8.2.0
# Operating System:Linux - Generic
# OS Version:Linux - Generic (glibc 2.17) (x86, 64-bit)
# -----------------------------------------------------
# 作用:一键安装MySQL8.2
# author odboy
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.2.0-linux-glibc2.17-x86_64.tar.xz
if [ $? -ne 0 ]; then
    echo "下载MySQL安装包失败"
    exit 100
fi

tar -xvf mysql-8.2.0-linux-glibc2.17-x86_64.tar.xz
if [ $? -ne 0 ]; then
    echo "解压安装包失败"
    exit 100
fi
mv mysql-8.2.0-linux-glibc2.17-x86_64 /usr/local/mysql
if [ $? -ne 0 ]; then
    echo "移动解压后的文件夹到指定位置失败"
    exit 100
fi

mkdir -p /var/lib/mysql
if [ $? -ne 0 ]; then
    echo "创建MySQL数据目录失败"
    exit 100
fi

groupadd mysql && useradd -r -g mysql -s /bin/false mysql
if [ $? -ne 0 ]; then
    echo "创建MySQL组和用户失败"
    exit 100
fi

chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /var/lib/mysql
if [ $? -ne 0 ]; then
    echo "修改文件夹权限失败"
    exit 100
fi

cat > /usr/local/mysql/my.cnf << EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/var/lib/mysql
server_id=1
port=3306
socket=/var/lib/mysql/mysqlx.sock

[mysql]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysqlx.sock

[client]
port=3306
socket=/var/lib/mysql/mysqlx.sock
EOF
if [ $? -ne 0 ]; then
    echo "创建MySQL配置文件失败"
    exit 100
fi

cd /usr/local/mysql
./bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize-insecure --user=mysql
if [ $? -ne 0 ]; then
    echo "初始化MySQL失败"
    exit 100
fi

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

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf
EOF

systemctl daemon-reload
systemctl start mysql
if [ $? -ne 0 ]; then
    echo "启动MySQL服务失败"
    exit 100
fi

systemctl enable mysql
if [ $? -ne 0 ]; then
    echo "设置MySQL服务开机启动失败"
    exit 100
fi

echo "MySQL8.2已安装"