MySQL自动安装脚本分享:一键部署开发环境

2025-06发布5次浏览

在开发环境中,手动安装和配置MySQL可能是一个繁琐且耗时的过程。为了简化这一流程,我们可以编写一个自动化的MySQL安装脚本,实现一键部署开发环境的目标。本文将详细介绍如何通过Shell脚本完成MySQL的自动化安装与配置,并提供代码示例以供参考。


1. 脚本设计目标

  • 自动下载:从官方源或镜像站下载MySQL二进制包。
  • 自动解压:将下载的压缩包解压到指定目录。
  • 自动配置:生成my.cnf配置文件并设置基础参数。
  • 服务管理:添加MySQL服务并设置开机自启。
  • 用户权限:创建默认用户并分配权限。

2. 环境准备

在开始编写脚本之前,请确保以下条件已满足:

  • 操作系统:Linux(如Ubuntu、CentOS等)。
  • 已安装工具:wgettarsudo等常用命令行工具。
  • 根权限:脚本需要以管理员身份运行。

3. 脚本实现

3.1 安装步骤概述

以下是脚本的主要逻辑流程:

  1. 检查系统依赖是否安装。
  2. 下载MySQL二进制包。
  3. 解压并移动到指定目录。
  4. 配置my.cnf文件。
  5. 初始化MySQL数据目录。
  6. 设置服务并启动MySQL。
  7. 创建默认用户并分配权限。

3.2 脚本代码

以下是完整的Shell脚本示例:

#!/bin/bash

# 定义变量
MYSQL_VERSION="8.0.33"
DOWNLOAD_URL="https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-${MYSQL_VERSION}-linux-glibc2.12-x86_64.tar.xz"
INSTALL_DIR="/usr/local/mysql"
DATA_DIR="/var/lib/mysql"
USER="mysql"

# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
    echo "请以root用户运行此脚本!"
    exit 1
fi

# 安装依赖
echo "正在安装依赖..."
yum install -y wget tar xz || apt-get install -y wget tar xz

# 下载MySQL
echo "正在下载MySQL..."
wget $DOWNLOAD_URL -O mysql.tar.xz
if [ $? -ne 0 ]; then
    echo "下载失败,请检查网络连接!"
    exit 1
fi

# 解压并移动到目标目录
echo "正在解压并安装MySQL..."
mkdir -p $INSTALL_DIR
tar -xJf mysql.tar.xz -C /usr/local/
mv /usr/local/mysql-$MYSQL_VERSION-linux-glibc2.12-x86_64/* $INSTALL_DIR
rm -rf mysql.tar.xz /usr/local/mysql-$MYSQL_VERSION-linux-glibc2.12-x86_64

# 创建用户和组
echo "正在创建MySQL用户和组..."
groupadd $USER
useradd -r -g $USER -s /bin/false $USER

# 配置my.cnf
echo "正在生成my.cnf配置文件..."
cat > /etc/my.cnf <<EOF
[mysqld]
basedir=$INSTALL_DIR
datadir=$DATA_DIR
socket=/var/lib/mysql/mysql.sock
port=3306
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

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

# 初始化MySQL
echo "正在初始化MySQL数据目录..."
$INSTALL_DIR/bin/mysqld --initialize-insecure --user=mysql --basedir=$INSTALL_DIR --datadir=$DATA_DIR

# 设置权限
chown -R mysql:mysql $DATA_DIR
chmod -R 750 $DATA_DIR

# 添加服务并启动
echo "正在添加MySQL服务..."
cat > /etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=$INSTALL_DIR/bin/mysqld --defaults-file=/etc/my.cnf
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

# 创建默认用户
echo "正在创建默认用户..."
$INSTALL_DIR/bin/mysql -uroot -e "CREATE USER 'dev'@'localhost' IDENTIFIED BY 'password';"
$INSTALL_DIR/bin/mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO 'dev'@'localhost';"

# 提示信息
echo "MySQL安装完成!"
echo "默认用户:dev,默认密码:password"

4. 流程图

以下是脚本执行的主要流程图:

graph TD;
    A[开始] --> B{检查是否为root用户};
    B --否--> C[退出];
    B --是--> D[安装依赖];
    D --> E[下载MySQL];
    E --> F[解压并移动];
    F --> G[创建用户和组];
    G --> H[生成my.cnf];
    H --> I[初始化数据目录];
    I --> J[设置权限];
    J --> K[添加服务并启动];
    K --> L[创建默认用户];
    L --> M[结束];

5. 注意事项

  1. 版本选择:根据实际需求选择合适的MySQL版本。
  2. 安全性:脚本中默认用户密码简单,请在生产环境中修改为强密码。
  3. 错误处理:建议在每一步增加错误检测机制,避免因单个步骤失败导致整个脚本中断。

6. 总结

通过上述脚本,可以快速实现MySQL的一键部署,极大地提高了开发环境搭建的效率。当然,这只是一个基础版本,可以根据具体需求进一步扩展功能,例如支持多版本安装、远程访问配置等。