MySQL安装部署-8.0.33-脚本

#!/bin/bash
set -o pipefail# 参数
# mysql_install.sh <MYSQL_PORT> <MYSQL_VERSION> <MYSQL_DATA_BASE>
#  sh db_install.sh 3308 5.6 /home/data
# <MYSQL_DATA_BASE> :因为测试环境数据目录一般在 /home/data 下,线上在 /data 下。
#  所以将这个路径作为参数传入,区别线上和测试环境# 判断参数个数
if [ $# -ne 3 ]; thenecho "Usage: bash $0 <MYSQL_PORT> <MYSQL_VERSION> <MYSQL_DATA_BASE>."exit 1
fi# 自行设置安装包位置
SOFTWARE="/opt/software"
if [ ! -d ${SOFTWARE} ];thenecho "====================Create the directory ${SOFTWARE}===================="mkdir ${SOFTWARE}echo "====================Finish creating the directory ${SOFTWARE}===================="
fi# 获取赋值
MYSQL_PORT=$1
MYSQL_VERSION=$2
MYSQL_DATA_BASE=$3# 安装依赖包
yum install -y ncurses-devel cmake libaio-devel openssl-devel
yum install -y cmake gcc gcc-c++ openssl* bison zlib autoconf libarchive
yum install doxygen
yum install -y libtirpc libtirpc-devel# ============================ install =================================
#  MYSQL_PORT $2: MYSQL_VERSION $3: MYSQL_DATA_BASETAR_DIR=${SOFTWARE}/mysql-${MYSQL_VERSION}.tar.gz
if [ ! -e ${TAR_DIR} ]
thenecho "error: ${TAR_DIR} is not exist!"exit 1
fiif [ ! -d  ${SOFTWARE}/mysql-${MYSQL_VERSION} ]
thentar -zxvf ${SOFTWARE}/mysql-${MYSQL_VERSION}.tar.gzecho "The file ${SOFTWARE}/mysql-${MYSQL_VERSION}.tar.gz extraction is complete."
elseecho "The directory is already ${SOFTWARE}/mysql-${MYSQL_VERSION} exist."
fi
cd ${SOFTWARE}/mysql-${MYSQL_VERSION}BASEDIR=/data/app/mysql_${MYSQL_VERSION}
MYSQL_DATA_DIR=${MYSQL_DATA_BASE}/mysql_${MYSQL_PORT}
if [ ! -e  ${SOFTWARE}/mysql-${MYSQL_VERSION}/CMakeCache.txt ]; thenecho "====================Cmake Start===================="cmake . -DCMAKE_INSTALL_PREFIX=$BASEDIR -DSYSCONFDIR=$BASEDIR/etc -DSYSTEMD_PID_DIR=$BASEDIR -DDEFAULT_charset=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_SSL=system -DWITH_READLINE=on -DMYSQL_DATADIR=${MYSQL_DATA_DIR} -DWITH_BOOST=./boost -DFORCE_INSOURCE_BUILD=1 -DDOWNLOAD_BOOST=1echo "====================Cmake End===================="
fiecho "====================Make Install Start===================="
make -j `grep processor /proc/cpuinfo | wc -l` && make install
echo "====================Make Install End===================="# 创建相关文件夹
echo -e "Create directories $BASEDIR/tmp, $BASEDIR/etc, ${MYSQL_DATA_DIR}_logs, ${MYSQL_DATA_DIR}\n"
mkdir -p $BASEDIR/tmp
mkdir -p $BASEDIR/etc
mkdir -p ${MYSQL_DATA_DIR}_logs
mkdir -p ${MYSQL_DATA_DIR}
echo -e "Finish creating directories $BASEDIR/tmp, $BASEDIR/etc, ${MYSQL_DATA_DIR}_logs, ${MYSQL_DATA_DIR}\n"# 配置 my.cnf
#[mysqld]
#port=${MYSQL_PORT}
#basedir=${BASEDIR}
#datadir=${MYSQL_DATA_DIR}
#tmpdir=$BASEDIR/tmp
#socket=${MYSQL_DATA_DIR}/mysql.sock
#pid-file=${MYSQL_DATA_DIR}/mysql.pid
#log-error=${MYSQL_DATA_DIR}_logs/error.log
#lower_case_table_names=1
#lc_messages_dir=${BASEDIR}/share
#lc_messages=en_US
#innodb_buffer_pool_size=24G
#server-id=1
#
#[mysql]
#no-auto-rehash
echo -e "$BASEDIR/etc/my.cnf"
cp /etc/my.cnf $BASEDIR/etc/my.cnfecho -e "====================Start editing my.cnf====================\n"
sed -i "s:port=.*:port=${MYSQL_PORT}:g" $BASEDIR/etc/my.cnf
sed -i "s:basedir=.*:basedir=${BASEDIR}:g" $BASEDIR/etc/my.cnf
sed -i "s:datadir=.*:datadir=${MYSQL_DATA_DIR}:g" $BASEDIR/etc/my.cnf
sed -i "s:tmpdir=.*:tmpdir=$BASEDIR/tmp:g" $BASEDIR/etc/my.cnf
sed -i "s:socket=.*:socket=${MYSQL_DATA_DIR}/mysql.sock:g" $BASEDIR/etc/my.cnf
sed -i "s:pid-file=.*:pid-file=${MYSQL_DATA_DIR}/mysql.pid:g" $BASEDIR/etc/my.cnf
sed -i "s:log-error=.*:log-error=${MYSQL_DATA_DIR}_logs/error.log:g" $BASEDIR/etc/my.cnf
sed -i "s:lc_messages_dir=.*:lc_messages_dir=${BASEDIR}/share:g" $BASEDIR/etc/my.cnf
echo "====================End of edit my.cnf===================="# 创建mysql用户/组
USER=mysql
UGROUP=mysql
# 查找用户组 并不显示输出
egrep "^${UGROUP}" /etc/group >& /dev/nullif [ $? -eq 0 ]; thenuseradd -g $UGROUP $USERecho "Create ${UGROUP}"
fichown -R $USER:$UGROUP ${BASEDIR}
chmod -R 755 ${BASEDIR}
chown -R $USER:$UGROUP ${MYSQL_DATA_DIR}
chmod -R 755 ${MYSQL_DATA_DIR}
chown -R $USER:$UGROUP ${MYSQL_DATA_DIR}_logsecho "====================MYSQL ${MYSQL_VERSION}:${MYSQL_PORT} is successfully installed to install in ${BASEDIR}===================="# ============================ install =================================# ============================ initialize ==============================
if [ "$(echo ${MYSQL_VERSION} | cut -d "." -f -2)" != "5.6" ]; then$BASEDIR/bin/mysqld --defaults-file=$BASEDIR/etc/my.cnf --user=mysql --basedir=$BASEDIR --datadir=${MYSQL_DATA_DIR} --initialize --consolepassword=$(awk '/password/ {print $NF}' ${MYSQL_DATA_DIR}_logs/error.log)if [ $? -eq 0 ]; thenecho "================= A temporary password is generated for root@localhost: $password ==============="fi
elif [ "$(echo ${MYSQL_VERSION} | cut -d "." -f -2)" == "5.6" ]; then$BASEDIR/scripts/mysql_install_db --defaults-file=$BASEDIR/etc/my.cnf --user=mysql --basedir=$BASEDIR --datadir=${MYSQL_DATA_DIR}
fiecho "================= MYSQL $MYSQL_VERSION is installed successfully ==============="echo -e "Please start the MYSQL service first: \n"
echo -e "$BASEDIR/bin/mysqld_safe --defaults-file=$BASEDIR/etc/my.cnf --user=mysql &\n"
echo -e "Then you can run MYSQL ${MYSQL_VERSION}: \n"if [ "$(echo ${MYSQL_VERSION} | cut -d "." -f -2)" != "5.6" ]; thenecho -e "$BASEDIR/bin/mysql -uroot -P ${MYSQL_PORT} -h 127.0.0.1 -p$password\n"elif [ "$(echo ${MYSQL_VERSION} | cut -d "." -f -2)" == "5.6" ]; thenecho -e "$BASEDIR/bin/mysql -uroot -P ${MYSQL_PORT} -h 127.0.0.1\n"
fiexit 0

半自动化安装MySQL数据库脚本,适配5.6/5.7/8.0版本的编译安装。

使用方法:

mysql_install.sh <MYSQL_PORT> <MYSQL_VERSION> <MYSQL_DATA_BASE>

例如:

/opt/shell/mysql_install.sh 4406 5.6.51 /data/app/test

结果

安装成功!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索H5的神秘世界:测试点解析

Html5 app实际上是Web app的一种&#xff0c;在测试过程中可以延续Web App测试的部分方法&#xff0c;同时兼顾手机端的一些特性即可&#xff0c;下面帮大家总结下Html5 app 相关测试方法&#xff01; app内部H5测试点总结 1、业务逻辑 除基本功能测试外&#xff0c;需要关注的…

SpringBoot——Swagger2 接口规范

优质博文&#xff1a;IT-BLOG-CN 如今&#xff0c;REST和微服务已经有了很大的发展势头。但是&#xff0c;REST规范中并没有提供一种规范来编写我们的对外REST接口API文档。每个人都在用自己的方式记录api文档&#xff0c;因此没有一种标准规范能够让我们很容易的理解和使用该…

传感器:探索Android中的传感器功能与使用

传感器&#xff1a;探索Android中的传感器功能与使用 一、传感器介绍1.1 Android 平台三大类传感器1.2 Android 平台支持的传感器1.3 传感器框架 二、传感器的使用2.1 识别传感器和传感器特性2.2 针对不同制造商的传感器或传感器的不同版本优化2.3 监控传感器事件2.4 处理不同的…

OpenCV | 图像梯度sobel算子、scharr算子、lapkacian算子

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 1、sobel算子 img cv2.imread(pie.png,cv2.IMREAD_GRAYSCALE) cv2.imshow(img,img) cv2.waitKey() cv2.destroyAllWindows() pie图片 dst cv2.S…

vue3+vite搭建cesium项目

1.创建项目 cnpm create vite 2.安装依赖 npm i cesium vite-plugin-cesium vite -D 3.在vite.config.js里进行配置 import { defineConfig } from vite import vue from vitejs/plugin-vue import cesium from vite-plugin-cesium; export default defineConfig({plugins…

NCo3.1(08) - Nco3 服务器端编程

本篇博文不再重复ABAP调用外部服务器的基础&#xff0c;只介绍 NCo3 开发的过程和要点。需要了解相关知识点的小伙伴们自行参考&#xff1a; SAP接口编程 之JCo3.0系列(06) - Jco服务器端编程 PyRFC 服务器端编程要点 创建项目 新建一个 Console 项目&#xff0c;选择 .Net …

失落的艺术:无着色器3D渲染

假设你想创建一个甜蜜的弹跳立方体&#xff0c;如下所示&#xff1a; 一个弹跳的立方体 你可以使用 3D 框架&#xff0c;例如 OpenGL 或 Metal。 这涉及编写一个或多个顶点着色器来变换 3D 对象&#xff0c;以及编写一个或多个片段着色器来在屏幕上绘制这些变换后的对象。 然…

Python中对数组连续赋值的问题

问题描述 在python中&#xff0c;首先用两个等号对两个数组进行初始化并赋值。之后&#xff0c;对任何一个数组进行赋值&#xff0c;都会将其赋予相同值。 import numpy as np Array1 Array2 np.empty(2) Array1[0],Array2[0]70,80 print(Array1[0],Array2[0])80.0 80.0 …

旋转的数组

分享今天看到的一个题目&#xff0c;不同思路解法 题目 思路1&#xff1a;时间复杂度0(N*k&#xff09; void rotate(int *a,int N,int k)//N为数组元素个数 { while(k--) { int tema[N-1]; for(int rightN-2;right>0;right--) { a[right1]a[right]; } a[0]tem; …

聊聊VMware vSphere

VMware vSphere是一种虚拟化平台和云计算基础设施解决方案&#xff0c;由VMware公司开发。它为企业提供了一种强大的虚拟化和云计算管理平台&#xff0c;能够在数据中心中运行、管理和保护应用程序和数据。vSphere平台与VMware ESXi虚拟化操作系统相结合&#xff0c;提供了完整…

水果编曲软件FL Studio21最新中文版本2023年最新FL 21中文版如何快速入门教程

水果编曲软件FL Studio介绍 各位&#xff0c;大家晚上好&#xff0c;今天给大家带来最新最新2023水果编曲软件FL Studio 21中文版下载安装激活图文教程。我们一起先了解一些FL Studio 。FL Studio21是目前流行广泛使用人数最多音乐编曲宿主制作DAW软件&#xff0c;这款软件相信…

java开发需要用到的软件,必备软件工具一览

java开发需要用到的软件&#xff0c;必备软件工具一览 如果你对Java编程感兴趣或已经是一名Java开发者&#xff0c;你需要一些必备的软件工具来提高你的生产力和简化开发过程。在本文中&#xff0c;我们将探讨Java开发所需的关键软件工具&#xff0c;并通过具体示例来解释它们的…

最新消息:滴滴 P0 事故原因,原因出来了

最新消息滴滴P0故障原因&#xff0c;是由于k8s集群升级导致的&#xff0c;后面又进行版本回退&#xff0c;由于现在大型互联网公司基本都是基于K8s进行部署的&#xff0c;如果K8s集群一出问题&#xff0c;上面运行的业务Pod和运维系统全部都得宕机&#xff0c;导致没法回滚。 …

二叉树(判断是否为单值二叉树)

题目&#xff08;力扣&#xff09;&#xff1a; 判断二叉树上每个节点的值是否相同&#xff0c;就需要让root节点分别与左节点和右节点分别比较是否相同。 注意&#xff1a;root等于空时&#xff0c;直接可以返回true&#xff1b; 首先&#xff0c;先判断他的特殊情况&#x…

如何在安防视频监控平台EasyCVR首页增添统计设备每个小时的温度展示功能?细节如下

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

BLIoTLink软网关,一键解决OT层与IT层的通信

在工业自动化领域&#xff0c;协议转换一直是一个重要的问题。不同的设备、系统往往使用不同的通信协议&#xff0c;这给数据采集、设备接入等带来很大的困扰。为了解决这个问题&#xff0c;各种协议转换软件应运而生。其中&#xff0c;BLIoTLink作为一款功能强大的嵌入式工业协…

常使用的定时任务

常使用的定时任务 一、 linux自带的定时任务 1、crontab 有这样一个需求&#xff1a;我们使用Java写一个工具jar包在系统空闲的时候去采集已经部署在Linux系统上的项目的一 些数据&#xff0c;可以使用 linux 系统的 crontab。 运行crontab -e&#xff0c;可以编辑定时器&…

[密码学]DES

先声明两个基本概念 代换&#xff08;substitution&#xff09;,用别的元素代替当前元素。des的s-box遵循这一设计。 abc-->def 置换&#xff08;permutation&#xff09;&#xff0c;只改变元素的排列顺序。des的p-box遵循这一设计。 abc-->bac DES最核心的算法就是…

使用nginx代理s3服务(私有云存储)

1、背景 公司网络安全原因&#xff0c;私有部署s3服务的机器无法被直接访问&#xff0c;所以需要加一层代理&#xff0c;通过访问代理去访问s3服务器&#xff0c;这里使用nginx进行代理。使用s3服务的方式是在代码中使用官方的java s3 sdk&#xff08;本文对于其他语言的官方s…

vue+jsonp编写可导出html的模版,可通过外部改json动态更新页面内容

效果 导出后文件结果如图所示&#xff0c;点击Index.html即可查看页面&#xff0c;页面所有数据由report.json控制&#xff0c;修改report.json内容即可改变index.html展示内容 具体实现 1. 编写数据存储的json文件 在index.html所在的public页面新建report.json文件&#xff…