在开发环境中,手动安装和配置MySQL可能是一个繁琐且耗时的过程。为了简化这一流程,我们可以编写一个自动化的MySQL安装脚本,实现一键部署开发环境的目标。本文将详细介绍如何通过Shell脚本完成MySQL的自动化安装与配置,并提供代码示例以供参考。
my.cnf
配置文件并设置基础参数。在开始编写脚本之前,请确保以下条件已满足:
wget
、tar
、sudo
等常用命令行工具。以下是脚本的主要逻辑流程:
my.cnf
文件。以下是完整的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"
以下是脚本执行的主要流程图:
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[结束];
通过上述脚本,可以快速实现MySQL的一键部署,极大地提高了开发环境搭建的效率。当然,这只是一个基础版本,可以根据具体需求进一步扩展功能,例如支持多版本安装、远程访问配置等。