自动安装解压版mysql8的脚本

由于mysql 8的 MSI 安装包,自动把程序安装到了C盘,且没看到有可以更改安装位置的配置可以修改。

故自行写了一个脚本,用来安装mysql 8的压缩包。可以将 mysql 8 以及其 Data目录 安装到C盘以外的位置。

第一次写 bat 脚本,希望各位大佬多赐教!

注意:自动安装zip压缩包,不是msi安装包

cs 复制代码
@echo off
:: 设置将要生成的文件的路径
set base_dir=%cd%
set data_dir=%base_dir%\Data
set myini_file=%base_dir%\my.ini
set Uploads_dir=%base_dir%\Uploads
 
:: 设置一些变量默认值
set agree=Y
set data_is_empty=0
set is_gen_start_file=N
set is_install_service=N
set is_clear_datadir=N
set is_add_path=N
 
:: 判断脚本当前所在的位置
%cd%/bin/mysql.exe --version >nul
if not %errorlevel%==0 (
    echo 脚本执行结束,请将此脚本移动到mysql程序的根目录下再执行(跟bin目录同一级目录)
    goto end
)
 
:: 打印程序安装说明
echo 使用说明:
echo 使用此脚本安装mysql时,会将保存数据的Data目录以及my.ini文件放在MySQL程序的根目录下:
echo %base_dir%
echo 可以修改此脚本的路径变量进行重新指定路径
set /p agree=如果同意,按任意键继续,按q键退出:
if /i %agree%==Q (
    echo 退出安装
    goto end
) else if /i not %agree%==Q (
    echo 脚本开始安装mysql.......
)
 
:: 生成my.ini配置文件
if not exist %myini_file% (
    echo [mysqld] >> %myini_file%
    echo basedir=%cd% >> %myini_file%
    echo datadir=%data_dir% >> %myini_file%
    echo secure-file-priv=%cd%\Uploads >> %myini_file%
    echo 生成my.ini文件:%myini_file%
) else (
    echo %myini_file%文件已存在,即将使用该配置文件
)
 
:: 创建 Uploads 目录
if not exist %Uploads_dir% (
    md %Uploads_dir%
    echo 创建Uploads目录:%Uploads_dir%
) else (
    echo %Uploads_dir%目录已存在,跳过创建
)
 
:: 创建 Data 目录
:md_data_dir
if not exist %data_dir% (
    md %data_dir%
    echo 创建Data目录:%data_dir%
    :: 创建了目录后,直接进行安装
    goto initialize_data
) else (
    goto data_dir_check
)
 
:: 如果Data目录已存在,则检查Data目录是否为空
:data_dir_check
for /f "tokens=* delims=" %%i in ('dir /b /a "%data_dir%"') do (
    set /p is_clear_datadir=%data_dir%目录已存在,并且目录不为空,是否清空Data目录(N不清空,Y清空):
    goto clear_datadir
)
 
if %data_is_empty%==0 (
    echo %data_dir%为空,即将初始化Data目录进行安装
    goto initialize_data
)
 
:clear_datadir
if /i %is_clear_datadir%==Y (
    echo 正在清空%data_dir%
    rd /s /q %data_dir%
    goto :md_data_dir
) else if /i %is_clear_datadir%==N (
    echo 跳过清空Data目录,即将进行不初化安装
    goto :install_service
) else (
    goto :data_dir_check
)
 
:initialize_data
echo 正在初始化Mysql....
%base_dir%/bin/mysqld.exe --defaults-file=%myini_file% --initialize-insecure --console
echo MySQL初始化完毕!
echo ===================================================
echo 注意!root用户的密码为空!
echo ===================================================
 
:need_install_service
set /p is_install_service=是否需要将MySQL设置成为windows系统服务(需要管理员身份)(Y/N,默认N):
if /i %is_install_service%==Y (
    goto install_service
) else if /i %is_install_service%==N (
    echo 已选择无须将MySQL设置为系统服务
    goto gen_start_file
) else (
    goto need_install_service
)
 
:install_service
echo 正在将检查windows服务......
:: sc query  type^= all ^| findstr /i "SERVICE_NAME"
for /F "tokens=2" %%i in (' sc query type^= service state^= all ^| findstr /i "MySQL" ^| findstr /i "SERVICE_NAME" ') do ( 
    for /F "tokens=* delims=" %%s in ('sc qc %%i ^| findstr /i "BINARY_PATH_NAME"' ) do (
        echo %%s | find /i "%base_dir%" > NUL &&  echo MySQL已经是Windows系统服务 & goto gen_start_file
    )
)
echo 正在将MySQL注册成为Windows系统服务......
%base_dir%/bin/mysqld.exe --install MySQL8 --defaults-file=%myini_file%
sc config MySQL8 start=demand
 
:gen_start_file
set /p is_gen_start_file=是否需要在bin目录下生成一键启动脚本mysqld_start(Y/N,默认N):
if /i %is_gen_start_file%==Y (
    echo mysqld.exe --defaults-file=%myini_file% --console > %base_dir%/bin/mysqld_start.bat
) else (
    echo 已选择不生成一键启动脚本。
)
 
:: 添加到用户级的环境变量
set /p is_add_path=是否需要将MySQL添加到环境变量(Y/N,默认N):
if /i %is_add_path%==N (
    echo 已跳过添加MySQL到环境变量
) else (
    set path | find /i "%base_dir%\bin" > nul || setx PATH "%PATH%;%base_dir%\bin"
    echo 已添加环境变量
)
 
:end
echo 脚本执行完毕!!!
相关推荐
小林coding2 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
18号房客2 小时前
高级sql技巧进阶教程
大数据·数据库·数据仓库·sql·mysql·时序数据库·数据库架构
翔云1234563 小时前
MySQL purged gtid是如何生成和维护的
数据库·mysql
平行线也会相交5 小时前
云图库平台(三)——后端用户模块开发
数据库·spring boot·mysql·云图库平台
恒辉信达6 小时前
hhdb客户端介绍(53)
数据库·mysql·hhdb·数据库可视化界面客户端
Hello.Reader7 小时前
Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
redis·mysql·缓存
是程序喵呀8 小时前
MySQL备份
android·mysql·adb
指尖上跳动的旋律8 小时前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
苹果醋312 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
先睡12 小时前
MySQL的架构设计和设计模式
数据库·mysql·设计模式