【批处理】- 批处理自动安装Mysql与Redis
前言
在全新环境中安装MySQL与Redis操作是挺麻烦的,于是就想使用脚本来自动安装,使用批处理进行一步到位的安装,后面还能使用工具进行打包成exe可执行文件,一键安装,最后能够更好的部署项目到windows系统的服务器。
代码与实现
本次是安装mysql8.0和redis5.0,安装在windows系统。
整体思路
流程很简单,需要获取安装的路径,文件所在路径,配置环境变量,安装服务,修改mysql密码。接下来一步一步解析。
安装mysql
1)、下载mysql压缩包
首先需要下载免安装的MySQL压缩包,https://dev.mysql.com/downloads/mysql/
下载完后解压,就会看到以下目录,接下来我们需要创建data文件 以及 my.ini的配置文件!
2)、添加配置文件my.ini
当然,配置文件也是可以通过dos指令输入进去的,只是为了方便,我们这里可以通过事先配置好存放进去,详细配置可以看如下:
[mysql]
default-character-set=utf8
[mysqld]
port=13306
basedir=D:\Desktop\tested\mysql-8.0.30
datadir=D:\Desktop\tested\mysql-8.0.30\data
max_connections=200
max_connect_errors=10
character-set-server=utf8
default-storage-engine=INNODB
[client]
port=13306
default-character-set=utf8
basedir:mysql解压所在的文件路径
datadir:数据存放的地址
注:要注意的是在输入路径地址的时候要使用’//’
3)、命令代码
前置工作准备完成,接下来就可以看一下批处理命令。
①、设置安装路径
首先就是对变量的过去与设置
set cds=%~dp0
set mysql_path=%cds%mysql-8.0.30
%~dp0:获取当前的路劲地址(绝对路径)
②、配置环境变量
将mysql\bin下的路径设置到path环境变量里面,后面是输出此时path的环境变量,以下代码包括设置了redis的环境变量。
echo 配置环境变量
echo.
setx path "%redis_path%;%mysql_path%\bin;%path%" /m
IF ERRORLEVEL 1 (
echo.
echo 配置环境变量失败,即将退出
echo.
goto END
)
echo.
echo 打印环境变量
echo.
echo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
set str=%path%
echo 所有变量:%str%
echo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo.
③、安装mysql服务
先设置MySQL服务的名字,为了防止存在相同的服务,将设置好的服务名称的服务通过net stop %service_name%
停掉,并且将mysql的data删除(这部需要谨慎处理),接着对mysql进行初始化,接着通过mysqld.exe去安装服务。
:: 设置mysql服务名字:mysql82
set service_name=mysql82
net stop %service_name%
echo >>>>删除原DATA
:: 删除原本的MySQL数据
rd /s /q %mysql_path%\data
echo >>>>删除原MYSQL服务
%mysql_path%\bin\mysqld.exe --remove %service_name%
echo >>>>初始化DATA
md %mysql_path%\data
echo >>>>安装MYSQL SERVICE
%mysql_path%\bin\mysqld.exe --initialize --user=mysql --console
%mysql_path%\bin\mysqld.exe --install %service_name%
④、修改密码
mysql8.0之后的版本,不能通过修改mysql.user 表来修改用户密码,取消了password函数,使用authentication_string=password("123456")
去修改密码会报错。按照只是用解压缩+配置文件.ini来安装是需要先通过初始化之后生成的随机临时密码登录,在进行修改密码。对于这个修改密码,我也是找了很久,看了很多篇文章,最后发现了解决方案。
解决办法:
首先有一种,通过mysqld --console --skip-grant-tables --shared-memory的方法启动服务器,在是使用修改密码命令去改变密码。可是,这种在使用批处理的时候遇到了许多问题,因为是新手,对指令这些逻辑还不是很清楚,因为使用这种方式启动MySQL,原来的思路是,等它启动服务后,用新的命令窗口去执行修改密码,接着关闭新窗口往下继续进行,但是会出现这条启动服务的任务不会自动完成。通过跳过密码验证就会使得无法往下继续执行,需要使用新的窗口来进行修改密码。这也就会导致接下来的命令就会无法执行。
接着后面使用第二种方式,需要在外部新建一个配置文件,用来进行修改密码的。使用-init-file重置MySQL Root密码。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
思路也很简单,只要使用新的窗口来执行这条语句,在把这个新的窗口关掉,就能够恢复初始窗口继续执行。
start "更改密码" cmd /c "%mysql_path%\bin\mysqld.exe --user=mysql --init-file=%cds%init-file.ini --console"
timeout /t 5
echo >>>>终止mysqld进程
taskkill /f /im mysqld.exe
start:执行命令,”更改密码“是命令窗口的标题,后面是使用mysqld
timeout /t 5 :倒计时5秒
taskkill /f /im mysqld.exe:杀死这个进程
详细方案可以看一下这位大佬写的,我的灵感也是得之于他:如何在MySQL 8.0中重置Root密码 - 腾讯云开发者社区-腾讯云
⑤、按照完毕
安装完毕就可以去执行启动mysql服务
net start %service_name%
安装redis
安装redis就更简单了,就直接使用安装指令就行
cd /d%redis_path%
redis-server.exe --service-install redis.windows.conf --service-name %redis_server_name% --loglevel verbose
echo 启动redis服务
redis-server.exe --service-start --service-name %redis_server_name%
代码附件
以下是所有的代码
@echo off
chcp 65001
title 安装MYSQL与Redis
echo.
echo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo 开始安装MYSQL8.0
echo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo.
set cds=%~dp0
set mysql_path=%cds%mysql-8.0.30
set redis_path=%cds%Redis5.0
echo.
echo 数据库安装路径:%mysql_path%
echo Redis安装路径:%redis_path%
echo.
echo 配置环境变量
echo.
setx path "%redis_path%;%mysql_path%\bin;%path%" /m
IF ERRORLEVEL 1 (
echo.
echo 配置环境变量失败,即将退出
echo.
goto END
)
echo.
echo 打印环境变量
echo.
echo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
set str=%path%
echo 所有变量:%str%
echo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo.
echo >>>>正在安装MYSQL服务
echo.
:: 设置mysql服务名字:mysql82
set service_name=mysql82
net stop %service_name%
echo.
echo >>>>删除原DATA
echo.
:: 删除原本的MySQL数据
rd /s /q %mysql_path%\data
echo.
echo >>>>删除原MYSQL服务
echo.
%mysql_path%\bin\mysqld.exe --remove %service_name%
echo.
echo >>>>初始化DATA
echo.
md %mysql_path%\data
echo.
echo >>>>安装MYSQL SERVICE
echo.
%mysql_path%\bin\mysqld.exe --initialize --user=mysql --console
%mysql_path%\bin\mysqld.exe --install %service_name%
echo >>>>关闭mysql服务
net stop %service_name%
:: 修改密码
echo >>>>执行更改密码start "更改密码" cmd /c "%mysql_path%\bin\mysqld.exe --user=mysql --init-file=%cds%init-file.ini --console" timeout /t 5
echo >>>>终止mysqld进程
taskkill /f /im mysqld.exenet start %service_name%
echo.
echo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo 启动MYSQL SERVICE,SERVICE NAME 》mysql82
echo.
echo 修改密码:root
echo.
echo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo.
echo 安装redis
:: 设置redis服务名字:redis5
set redis_server_name=redis5
echo.
echo ****正在安装REDIS服务****
echo.
echo 停止原REDIS服务
echo.
net stop %redis_server_name%
echo 删除redis服务
sc delete %redis_server_name%
echo.
cd /d%redis_path%
redis-server.exe --service-install redis.windows.conf --service-name %redis_server_name% --loglevel verbose
echo 启动redis服务
redis-server.exe --service-start --service-name %redis_server_name%
:END
相关文章:

【批处理】- 批处理自动安装Mysql与Redis
前言 在全新环境中安装MySQL与Redis操作是挺麻烦的,于是就想使用脚本来自动安装,使用批处理进行一步到位的安装,后面还能使用工具进行打包成exe可执行文件,一键安装,最后能够更好的部署项目到windows系统的服务器。 …...

聊聊华为的工作模式
目录 一、试用期与加班工资 二、招聘 三、月度答辩和转正答辩 四、可信考试认证 五、接口人 六、问题缺陷单 七、代码检视 八、功能开发 九、出征海外 一、试用期与加班工资 一般而言,试用期持续的时间为3-6个月,工资、奖金都按正式员工的标准…...

燕山大学-面向对象程序设计实验-实验6 派生与继承:多重派生-实验报告
CSDN的各位友友们你们好,今天千泽为大家带来的是燕山大学-面向对象程序设计实验-实验5 派生与继承:单重派生-实验报告,接下来让我们一起进入c的神奇小世界吧,相信看完你也能写出自己的 实验报告!本系列文章收录在专栏 燕山大学面向对象设计报告中 ,您可以在专栏中找…...

分割两个字符串得到回文串[抽象--去除具体个性取共性需求]
抽象前言一、分割两个字符串得到回文串二、双指针总结参考文献前言 抽象去个性留共性,是因为具体个性对于解决问题是个累赘。少了累赘,直击需求,才能进行问题转换或者逻辑转换。 一、分割两个字符串得到回文串 二、双指针 // 限定死了&…...

【LeetCode】1609. 奇偶树、1122. 数组的相对排序
作者:小卢 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 1609. 奇偶树 1609. 奇偶树 题目描述: 如果一棵二叉树满足下述几个条件&#x…...

【C++初阶】4. Date类的实现
如果下面博客有不理解的地方,可以查看源码:代码提交:日期类的实现 1. 构造函数的实现 由于系统实现的默认构造函数即便采用默认值的形式也只能存在1个固定的默认日期(例如:1997-1-1)。所以,构…...

ES6新特性--变量声明
可以使用let关键字来声明变量let a;let b,c;//同时声明多个变量let stu = 张三;let name =李四,age = 12;//声明变量的同时赋值 let关键字使用的注意事项(1).变量在声明的时候不可以重复,这也符合其他语言的变量声明规范 let name = 李四; let name = 张三;//这里开始报错,但…...

【Django】缓存机制
文章目录缓存的介绍Django的6种缓存方式开发调试缓存dummy.DummyCache内存缓存locmem.LocMemCache文件缓存filebased.FileBasedCache⭐️数据库缓存db.DatabaseCacheMemcache缓存memcached.MemcachedCacheMemcache缓存memcached.PyLibMCCacheDjango缓存的应用内存缓存cache_pag…...

我的创作纪念日——一年的时间可以改变很多
机缘 不知不觉来到CSDN已经创作一年了。打心底讲,对于在CSDN开始坚持创作的原因,我用一句话来概括最合适不过了——“无心插柳柳成荫” 为什么这么说呢? 这要从我的一篇博客说起——《输入命令Javac报错详解》: 那也是我第一次…...

Jetson Nano驱动机器人的左右两路电机
基于Jetson Nano板子搭建一个无人车,少不了减速电机驱动轮子滚动,那如何驱动呢?从Jetson.GPIO库文件来说,里面没有支持产生PWM的引脚,也就意味着Jetson nano没有硬件产生PWM的能力,所以我们不得不使用别的方…...

如何通过openssl生成公钥和私钥?
1、生成RSA秘钥的方法 生成RSA秘钥的方法: openssl genrsa -des3 -out privkey.pem 2048 注:建议用2048位秘钥,少于此可能会不安全或很快将不安全。 这个命令会生成一个2048位的秘钥,同时有一个des3方法加密的密码,…...

Verilog的If语句和Case语句
这篇文章将讨论 verilog 中两个最常用的结构----if语句和case语句。在之前的文章中学习了如何使用过程块(例如always块)来编写按顺序执行的verilog 代码。此外还可以在过程块中使用许多语句----统称为顺序语句,如case 语句和 if 语句。这篇文…...

HJ31 单词倒排
描述 对字符串中的所有单词进行倒排。 说明: 1、构成单词的字符只有26个大写或小写英文字母; 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时…...

leetcode——203.移除链表元素
文章目录🐨1.题目🪅2.解法1-头节点迭代🌿2.1 思路🌿2.2 代码实现🦆3. 解法2-创建新链表🎏3.1 思路🎏3.2 代码实现🐐4. 题目链接🐨1.题目 给你一个链表的头节点head和一个…...

GPT-4来袭:开启人工智能新时代
文章目录介绍GPT4 模型演示示例示例 1示例 2示例 3示例 4示例 5最后Reference介绍 2023年3月15日,OpenAI公司正式发布了先进的自然语言处理模型GPT-4,前不久发布的GPT-3.5模型只能理解文字的语言模型,而新发布的GPT4则是多模态模型ÿ…...

芯微电子IPO终止:业绩开始大幅下滑,王日新、王苟新兄弟不同命
近日,深圳证券交易所披露的信息显示,黄山芯微电子股份有限公司(下称“芯微电子”)申请撤回发行上市申请文件。因此,深圳证券交易所决定终止对其首次公开发行股票并在创业板上市的审核。 据贝多财经了解,芯…...

【C++】用手搓的红黑树手搓set和map
目录 一、set/map的底层结构 1、set/map的源码 2、利用模板区分set/map 3、利用仿函数控制比较大小 二、set/map的迭代器(红黑树的迭代器) 1、红黑树的begin、end迭代器 2、红黑树迭代器的operator 3、红黑树迭代器的operator-- 三、set的const…...

【C++】空指针弃NULL用nullptr
空指针(null pointer)不指向任何对象,在试图使用一个指针之前代码可以首先检查它是否为空。声明空指针的3种方法: int* p1 NULL; int* p2 nullptr; int* p3 0; 在C语言中常用NULL生成空指针,NULL是一个宏…...

【selenium学习】数据驱动测试
数据驱动在 unittest 中,使用读取数据文件来实现参数化可以吗?当然可以。这里以读取 CSV文件为例。创建一个 baidu_data.csv 文件,如图所示:文件第一列为测试用例名称,第二例为搜索的关键字。接下来创建 test_baidu_da…...

嵌入式硬件电路设计的基本技巧
目录 1 分模块 2 标注关键参数 3 电阻/电容/电感/磁珠的注释 4 可维修性 5 BOM表归一化 6 电源和地的符号 7 测试点 8 网络标号 9 容错性/兼容性 10 NC、NF 11 版本变更 12 悬空引脚 13 可扩展性 14 防呆 15 信号的流向 16 PCB走线建议 17 不使用\表示取反 不…...

Spring MVC 图片的上传和下载
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

远程工具神器之MobaXterm (小白必看)
目录 1、介绍 2、ssh连接详解过程 3、特点 1、介绍 带有 X11 服务器、选项卡式 SSH 客户端、网络工具等的 Windows 增强型终端。 MobaXterm 是您远程计算的终极工具箱。在单个Windows应用程序中,它提供了大量功能,这些功能是为程序员,网站管…...

VRIK+Unity XR Interaction Toolkit 实现VR上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法)
文章目录📕第一步:配置 OpenXR XR Interaction Toolkit 的开发环境📕第二步:导入人物模型⭐VRM 模型导入 Unity 的方法📕第三步:配置 VRIK⭐给模型加上 VRIK 组件⭐将模型的头部和手部的位置作为 VR 追踪目…...

【C++进阶】map的介绍和使用
文章目录map的介绍map的模板参数介绍map的容器介绍map重要容器接口的介绍及使用构造函数增删查改迭代器的使用map的介绍 map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。在map中,键值key通常用于排序和惟一地标识…...

第十四届蓝桥杯三月真题刷题训练——第 15 天
目录 第 1 题:斐波那契与7 问题描述 答案提交 运行限制 代码: 第 2 题:小蓝做实验 问题描述 答案提交 运行限制 代码: 第 1 题:斐波那契与7 问题描述 斐波那契数列的递推公式为: FnFn−1Fn−2, 其中 F1F21…...

HTML5是什么?怎么学习HTML5?
HTML5 是什么?HTML5是什么?相信这个问题并不容易回答,大多数人对于HTML5的概念仅仅是听说过而已,非要让他说出个所以然来,结果只能让你失望。相比普及了近十四年的HTML4来说,HTML5带来的震撼其实丝毫不亚于…...

个人算法题精简导航整理(精炼汇总,含知识点、模板题、题单)
文章目录前言导航注意事项技巧类自定义Pair排序N维数组转一维位运算状态压缩算法基础枚举 √指数型枚举排列型枚举组合型枚举模拟 √日期天数问题:平年闰年情况递归&分治 √贪心 √货仓选址-模板题排序 √归并排序前缀和&差分 √前缀和差分(一维…...

Mac 和 Win,到底用哪个系统学编程?
今天来聊一个老生常谈的问题,学编程时到底选择什么操作系统?Mac、Windows,还是别的什么。。 作为一个每种操作系统都用过很多年的程序员,我会结合我自己的经历来给大家一些参考和建议。 接下来先分别聊聊每种操作系统的优点和不…...

文心一言---中国版的“ChatGPT”狂飙的机会或许要出现了
⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…...

2023最全Python+Selenium环境搭建教程-你绝对想不到有这么简单!
还有视频版本结合项目实战介绍,轻松学习! PythonSelenium自动化测试环境搭建Web自动化测试全套教程_哔哩哔哩_bilibiliPythonSelenium自动化测试环境搭建Web自动化测试全套教程共计180条视频,包括:1、Web自动化测试需求和挑战、2…...