当前位置:

首页 > 数据库 > 软件教程 > 使用Shell脚本自动化MySQL数据库的安装

使用Shell脚本自动化MySQL数据库的安装

本文主要通过Shell脚本语言的方式自动化安装MySQL数据库,从而提高我们的工作效率。大致思路及步骤如下:第一步:首先,自定义MySQL数据库的安装目录、MySQL数据存储目录和MySQL数据库超级用户的密码变量。#!/bin/bashbinDir='/usr/local/mysql'#MySQL数据库的安装目录dataDir='/bigdata/mysql/mysqldata'#MySQL数据存储目录mysqlPassword='1q!2w@3e#'#MySQL数据库超级用户的密码第二步:获取当前脚本

本文主要通过Shell脚本语言的方式自动化安装MySQL数据库,从而提高我们的工作效率。

自动化安装MySQL数据库的Shell脚本

大致思路及步骤如下:

第一步:首先,自定义MySQL数据库的安装目录、MySQL数据存储目录和MySQL数据库超级用户的密码变量。

#!/bin/bash
binDir='/usr/local/mysql' # MySQL 数据库的安装目录
dataDir='/bigdata/mysql/mysqldata'# MySQL 数据存储目录
mysqlPassword='1q!2w@3e#' # MySQL 数据库超级用户的密码

第二步:获取当前脚本所在的目录,并将该目录赋值给变量BASE

然后,使用cd命令切换到这个目录。通常用于确保脚本在执行时位于正确的工作目录。

BASE=$(cd `dirname $0` && pwd)
cd $BASE

第三步:检查操作系统的内核版本是否为el7,如果不是,则输出错误信息并退出安装。

release=$(uname -r |awk -F'.' '{print $4}')
if [ "X${release}" != 'Xel7' ];then
echo "[ERROR] 操作系统版本: ${release}, 非el7, 退出安装"
exit 1
fi
  • release=$(uname -r |awk -F'.' '{print $4}'):获取当前操作系统的内核版本,并提取出版本号中的第四个字段,然后将其赋值给变量release
  • 接着通过条件判断语句,使用ifthen来检查变量release是否等于el7。如果不等于el7,则输出错误信息并退出安装。
  • [ "X${release}" != 'Xel7' ]:是一个条件判断,X 是为了防止变量为空时出现错误。如果条件成立,则执行echo输出错误信息,然后使用exit 1退出安装。

第四步:检查${binDir}${dataDir}两个变量中是否包含/mysql关键字。如果这两个变量中没有包含/mysql,则会输出相应的错误信息并退出脚本。

keyword='/mysql'
if ! echo "${binDir}" |grep ${keyword} &>/dev/null; then
echo "[ERROR] ${binDir}配置错误, 没有包含${keyword}"
exit 1
fi

if ! echo "${dataDir}" |grep ${keyword} &>/dev/null; then
echo "[ERROR] ${dataDir}配置错误, 没有包含${keyword}"
exit 1
fi

第五步:停止MySQL进程并清理指定目录。

echo "[INFO] 停止mysql进程, 并清理目录: ${binDir}, ${dataDir}..."
service mysql stop &>/dev/null
test -d ${binDir} && rm -fr ${binDir}
test -d ${dataDir} && rm -fr ${dataDir}
  • echo "[INFO] 停止mysql进程, 并清理目录: ${binDir}, ${dataDir}...":使用echo命令打印一条信息,其中${binDir}${dataDir}是变量,会被替换为实际的目录路径。
  • service mysql stop &>/dev/null:使用service命令来停止MySQL服务。&>/dev/null部分是将命令的输出重定向到/dev/null,即丢弃输出,这样将不会在终端上显示任何信息。
  • test -d ${binDir} && rm -fr ${binDir}:使用test -d检查${binDir}是否是一个目录,如果是,则执行rm -fr ${binDir}来递归地删除${binDir}目录及其内容。
  • test -d ${dataDir} && rm -fr ${dataDir}:使用test -d检查${dataDir}是否是一个目录,如果是,则执行rm -fr ${dataDir}来递归地删除${dataDir}目录及其内容。

第六步:在命令行中输出日志信息:[INFO] 开始解压mysql安装包, 请等待…,然后执行解压缩命令tar zxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz,接着将解压后的文件夹移动到自定义变量${binDir}的目录中。

echo "[INFO] 开始解压mysql安装包, 请等待..."
tar zxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz && mv mysql-5.7.25-linux-glibc2.12-x86_64 ${binDir}

第七步:创建mysql的组和用户。

echo "[INFO] 创建mysql组与用户..."
groupadd mysql 2>/dev/null
useradd -r -g mysql mysql 2>/dev/null
  • groupadd mysql 2>/dev/null:使用groupadd命令创建一个名为mysql的组。2>/dev/null的作用是将错误输出重定向到/dev/null,这样如果组已经存在,就不会显示错误信息。
  • useradd -r -g mysql mysql 2>/dev/null:使用useradd命令创建一个名为mysql的用户,并将其加入到mysql组中。
  • -r:表示创建一个系统用户,-g mysql:表示将用户添加到mysql组。同样,2>/dev/null的作用是将错误输出重定向到/dev/null,以防止显示错误信息。

第八步:创建MySQL数据目录,并将目录下的所有文件和子目录的所有者和所属组设置为:

echo "[INFO] 创建mysql数据目录..."
mkdir -p${dataDir} && chown -R mysql:mysql ${dataDir}
chown -R mysql:mysql ${binDir}
  • echo "[INFO] 创建mysql数据目录...":输出一条信息,提示用户正在创建MySQL数据目录。
  • mkdir -p ${dataDir} && chown -R mysql:mysql ${dataDir}:首先,mkdir -p ${dataDir}用于创建目录${dataDir}-p:表示如果目录不存在,则进行创建。
  • 接着,&&是逻辑与操作符,只有在前一个命令成功执行后才执行后一个命令。所以,如果目录创建成功,才会执行chown -R mysql:mysql ${dataDir}命令将以递归的方式(包括子目录和文件)将${dataDir}目录下的所有文件和子目录的所有者和所属组设置为mysql:mysql

第九步:创建MySQL的配置文件/etc/my.cnf。该配置文件包含了MySQL服务器mysqld和客户端client的配置信息。

echo "[INFO] 创建mysql配置文件:/etc/my.cnf ..."
cat >/etc/my.cnf <

[mysqld]MySQL服务器的配置部分,具体配置参数选项如下:

  • character-set-server=utf8服务器的字符集为 UTF-8
  • server-id = 1服务器的唯一ID为 1
  • lower_case_table_names=1:表名大小写不敏感
  • basedir=${binDir}:MySQL 的安装目录
  • datadir=${dataDir}:MySQL 的数据目录
  • user=mysql:MySQL 服务的运行用户
  • symbolic-links=0:禁用符号链接
  • federated:启用 Federated 存储引擎
  • sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION:设置 SQL 模式

[client]MySQL客户端的配置部分,具体配置参数选项如下:

  • default-character-set=utf8:客户端的默认字符集为 UTF-8

[mysqld_safe]MySQL安全模式的配置部分,具体配置参数选项如下:

  • default-storage-engine=INNODB:默认的存储引擎为InnoDB
  • character-set-server=utf8服务器的字符集为 UTF-8
  • collation-server=utf8_general_ci服务器的排序规则为 utf8_general_ci

第十步:初始化MySQL数据库

# 初始化mysql
echo "[INFO] 初始化mysql..."
${binDir}/bin/mysqld --defaults-file=/etc/my.cnf --basedir=${binDir} --datadir=${dataDir} --user=mysql --initialize-insecure

该命令会执行mysqld可执行文件,并使用指定的配置文件、安装目录、数据目录和用户来初始化MySQL数据库。

  • --initialize-insecure:以不安全的方式初始化数据库,会创建一个空密码的root用户。

第十一步:添加开机启动

echo "[INFO] 添加mysql服务, 以及开机启动..."
ln -sf ${binDir}/bin/mysql /usr/local/bin/mysql
ln -sf ${binDir}/support-files/mysql.server /etc/init.d/mysql
/usr/bin/systemctl enable mysql
  • ln -sf ${binDir}/bin/mysql /usr/local/bin/mysql:创建一个符号链接,将${binDir}/bin/mysql链接到/usr/local/bin/mysql-s:表示创建一个符号链接,-f:表示如果/usr/local/bin/mysql已经存在,则先删除。${binDir}/bin/mysql是源文件,/usr/local/bin/mysql是链接文件。
  • ln -sf ${binDir}/support-files/mysql.server /etc/init.d/mysql:创建一个符号链接,将${binDir}/support-files/mysql.server链接到/etc/init.d/mysql-s选项表示创建一个符号链接,-f选项表示如果/etc/init.d/mysql已经存在,则先删除。${binDir}/support-files/mysql.server是源文件,/etc/init.d/mysql是链接文件。
  • /usr/bin/systemctl enable mysql:使用systemctl命令启用mysql服务,使其在系统启动时自启动。

第十二步:启动 MySQL 服务

echo "[INFO] 启动mysql服务..."
service mysql start
if [ $? -ne 0 ];then
echo "[ERROR] mysql启动失败, 查看mysql日志: ${dataDir}下的.err文件"
exit 2
fi
  • echo "[INFO] 启动mysql服务...":用于在控制台输出一条信息,提示用户正在启动MySQL服务。
  • service mysql start:启动MySQL服务。
  • if [ $? -ne 0 ];then:条件语句,用于检查上一条命令的执行结果。$?:是一个特殊变量,用于获取上一个命令的退出状态。如果上一个命令执行成功,其退出状态为0,否则为非0
  • echo "[ERROR] mysql启动失败, 查看mysql日志: ${dataDir}下的.err文件"MySQL服务启动失败时,将输出一条错误信息,并提示查看MySQL日志文件。
  • exit 2:如果MySQL服务启动失败,将以退出码2结束执行,表示出现了错误。

第十三步:在 MySQL 数据库中创建用户、数据库和授予权限

echo "[INFO] 修改mysql用户密码..."
${binDir}/bin/mysql -uroot <
  • ${binDir}/bin/mysql -uroot <:在命令行中执行MySQL客户端并使用root用户登录的命令。
  • SET PASSWORD = PASSWORD('${mysqlPassword}');:设置MySQL用户密码。
  • ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;:将root用户的密码过期策略设置为永不过期。
  • create database hive;:创建名为hive的数据库。
  • create database ranger;:创建名为ranger的数据库。
  • create user 'hive' identified by '1q!2w@3e#';:创建一个名为hive的用户,并设置其密码为:1q!2w@3e#
  • grant all on *.* to hive@"%" identified by "1q!2w@3e#";:授予用户hive对所有数据库的所有权限,并使用指定的密码进行身份验证。
  • grant all on *.* to root@'%' identified by'1q!2w@3e#';:授予root用户对所有数据库的所有权限,并使用指定的密码进行身份验证。
  • UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';:更新MySQL用户表中root用户的权限,将Grant_privSuper_priv设置为:Y,表示拥有所有权限。
  • FLUSH PRIVILEGES;:刷新MySQL的权限,使其配置生效。

最后,代码中的 echo 命令用于输出一些提示信息,提示用户MySQL安装完成。

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
数据库 软件教程
相关文章 更多
AE基础教程:如何创建合成并制作关键帧动画
AE基础教程:如何创建合成并制作关键帧动画

本文指导After Effects新手完成从打开软件到制作简单动画的完整流程。内容涵盖新建合成、导入素材、添加关键帧及预览验证,适用于AE基础学习。读者可依据步骤快速完成首个可播放的动效项目。

电影剪辑实战:镜头组织、节奏控制与声音衔接技巧
电影剪辑实战:镜头组织、节奏控制与声音衔接技巧

本文详解电影剪辑核心流程,从素材整理、镜头空间组织到叙事节奏压缩,再到J-cut/L-cut声音衔接技巧。通过粗剪保逻辑、精剪压停顿、反应镜头缓冲及电平统一检查,帮助创作者打造空间清晰、情绪连贯且听感自然的成片。

转场剪辑实战指南:硬切、遮挡与运镜的精准选择与操作技巧
转场剪辑实战指南:硬切、遮挡与运镜的精准选择与操作技巧

本文详解硬切、遮挡转场和运镜转场的适用场景与操作逻辑。通过对比三种转场的核心区别,提供基于素材条件和叙事目的的判断标准,帮助剪辑师避免滥用特效,掌握自然衔接画面的实战技巧。

GitLab新手创建项目并推送第一次提交的操作指南
GitLab新手创建项目并推送第一次提交的操作指南

本文指导GitLab新手完成创建项目并推送第一次提交的最小闭环。涵盖远程项目创建、本地仓库初始化、添加远程地址及执行git push。重点说明HTTPS与SSH认证差异、分支名(master/main)核对及提交验证标准,确保远程仓库真正建立。

抖音拍摄剪辑教程:从竖屏运镜到卡点成片
抖音拍摄剪辑教程:从竖屏运镜到卡点成片

本教程针对抖音竖屏视频制作,涵盖拍摄前构思、稳定运镜、粗剪筛选、音乐卡点及导出检查全流程。重点在于拍摄时预留字幕空间、利用动作节点辅助剪辑,以及通过鼓点对齐画面。适用于新手快速完成第一条完整成片,强调素材质量与节奏自然,避免过度特效与版权风险。

饭圈舞台照修图:降噪、调色与人物突出技巧
饭圈舞台照修图:降噪、调色与人物突出技巧

针对饭圈舞台照光线乱、噪点多、背景抢眼的痛点,本文提供“保脸、控光、突出主体”的修图方案。核心步骤包括:利用Lightroom降噪面板处理高ISO颗粒,控制曝光避免高光死白或脸部死黑;通过压低背景色彩、提升人物亮度与对比度来修正舞台灯光导致的肤色偏差;最后通过裁剪去除杂乱元素,确保人物主体清晰且肤色自然。

Photoshop安装失败或启动异常:系统要求、安装流程与故障排查指南
Photoshop安装失败或启动异常:系统要求、安装流程与故障排查指南

本文提供Photoshop完整安装指南,涵盖Windows/macOS系统要求、Creative Cloud客户端部署及常见启动故障排查。通过安装前磁盘与账号检查、安装中网络监控、安装后功能测试三步法,解决安装中断、登录失败及启动卡顿问题,确保软件稳定可用。

创维电视通过U盘安装第三方软件完整教程:权限设置与故障排查
创维电视通过U盘安装第三方软件完整教程:权限设置与故障排查

本文提供创维电视通过U盘安装第三方APK的完整操作指南。核心步骤包括:准备格式化的U盘与正规APK文件,在酷开系统“应用管理”中找到安装入口,临时开启“允许安装未知来源应用”权限,以及安装后的功能测试与权限关闭。适用于解决电视无法识别U盘、提示解析失败或权限受限等问题,确保安装安全且不影响系统稳定。

Excel筛选大于指定数值:操作步骤与结果验证
Excel筛选大于指定数值:操作步骤与结果验证

本教程演示如何在Excel中筛选大于指定数值的数据。核心步骤包括:确保数据连续、选中表头、通过“开始→排序和筛选”开启筛选,并在“数字筛选”中选择“大于”输入阈值。筛选仅隐藏不符合条件的行,不删除数据。完成后需逐行验证可见数据是否均大于阈值,并可通过取消筛选恢复全部数据。

Creo零基础入门:新建零件与第一次拉伸建模完整指南
Creo零基础入门:新建零件与第一次拉伸建模完整指南

本教程指导Creo初学者完成首个拉伸实体建模。通过新建零件、选择mmns_part_solid模板、定义草绘平面及绘制封闭轮廓,生成三维实体。内容涵盖操作路径、参数设置及常见错误排查,帮助新手建立正确的建模逻辑与单位概念。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。