批处理自动安装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.exe net 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!