bash mysql-install.sh
#!/bin/bash
# 设置 MySQL 版本和下载地址
MYSQL_VERSION="5.7.44"
MYSQL_PACKAGE="mysql-${MYSQL_VERSION}-linux-glibc2.12-x86_64.tar.gz"
DOWNLOAD_URL="https://dev.mysql.com/get/Downloads/MySQL-5.7/${MYSQL_PACKAGE}"
# 设置安装目录
INSTALL_DIR="/usr/local/mysql"
# 检查是否以root用户运行
if [ "$(id -u)" != "0" ]; then
echo "请以root用户身份运行此脚本。"
exit 1
fi
# 检查文件是否已存在于当前目录
if [ -f $MYSQL_PACKAGE ]; then
echo "文件 ${MYSQL_PACKAGE} 已经存在,跳过下载。"
else
# 如果文件不存在,则开始下载到当前目录
wget -c "$DOWNLOAD_URL" || {
echo "下载文件 ${MYSQL_PACKAGE} 失败,请检查网络或 URL 是否正确。"
exit 1
}
echo "文件 ${MYSQL_PACKAGE} 下载成功。"
fi
# 判断是否存在 mysql 用户,若不存在则创建
if id mysql >/dev/null 2>&1; then
echo "MySQL 用户已存在"
else
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
echo "创建 MySQL 用户成功"
fi
# 解压到指定目录
mkdir -p /var/lib/mysql/ /usr/local/mysql/logs
tar zxvf "${MYSQL_PACKAGE}" -C "${INSTALL_DIR}" --strip-components=1 || { echo "解压文件失败。"; exit 1; }
# 删除已下载的压缩包,节省空间(可选)
rm -f "$MYSQL_PACKAGE"
# 设置权限
chown -R mysql:mysql "${INSTALL_DIR}"
# 创建 MySQL 配置文件(示例配置,根据需求修改)
cat <<EOF > "${INSTALL_DIR}/my.cnf"
[mysqld]
server-id = 1
basedir=${INSTALL_DIR}
datadir=${INSTALL_DIR}/data
port=3306
socket=/var/lib/mysql/mysql.sock
max_connections = 1000
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/logs/slow_queries.log
long_query_time = 0.6 # 这里设置慢查询的阈值,单位是秒
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 2 # 超过 2 天的 binlog 删除
log_error = /usr/local/mysql/logs/error.log # 错误日志路径
[client]
socket=/var/lib/mysql/mysql.sock
EOF
# 添加 MySQL 服务到系统服务管理(这里以 Systemd 为例)
cat <<EOF > /etc/systemd/system/mysql.service
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=${INSTALL_DIR}/bin/mysqld_safe --defaults-file=${INSTALL_DIR}/my.cnf
PIDFile=${INSTALL_DIR}/data/mysql.pid
[Install]
WantedBy=multi-user.target
EOF
# 重载 Systemd 并启动 MySQL 服务
systemctl daemon-reload
systemctl start mysql
systemctl enable mysql
# 开始初始化 MySQL
"${INSTALL_DIR}/bin/mysqld" --initialize-insecure --user=mysql || { echo "初始化 MySQL 失败。"; exit 1; }
echo "MySQL ${MYSQL_VERSION} 已安装并启动。"
exit 0
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.