首先查看下目录结构 此教程适用于mysql 5.7.32 安装到D盘xfl目录
winsw下载链接 https://github.com/winsw/winsw
//注册服务
winsw.exe install
//卸载服务
winsw.exe uninstall
//启动服务
winsw.exe start
//停止服务
winsw.exe stop
//重启服务
winsw.exe restart
//查看状态
winsw.exe status
frp下载链接 https://github.com/fatedier/frp/releases
mysql下载链接 https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.32-winx64.zip https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.32-win32.zip
下载完成按照上图目录结构 解压文件并改名
首先根目录创建winsw.xml
<service>
<!-- 该服务的唯一标识 -->
<id>frpc</id>
<!-- 该服务的名称 -->
<name>frpc</name>
<!-- 该服务的描述 -->
<description>frpc客户端 这个服务用 frpc 实现内网穿透</description>
<!-- 要运行的程序路径 -->
<executable>D:\xfl\frpc\frpc.exe</executable>
<!-- 携带的参数 -->
<arguments>-c D:\xfl\frpc\frpc.ini</arguments>
<!-- 第一次启动失败 60秒重启 -->
<onfailure action="restart" delay="60 sec"/>
<!-- 第二次启动失败 120秒后重启 -->
<onfailure action="restart" delay="120 sec"/>
<!-- 日志模式 -->
<logmode>append</logmode>
<!-- 指定日志文件目录(相对于executable配置的路径) -->
<logpath>logs</logpath>
</service>
然后创建install.bat
@echo off
chcp 65001
@REM %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
@REM cd /d "%~dp0"
title :::::::软件安装程序:::::::
if "%1" == "" (
echo 请输入端口
goto success_exit
)
@rem /a表示进行数值运算
set /a a=4000,b=%1
set /a result=%a%+%b%
@REM 设置utf8解决乱码问题
@rem 保存当前路径
set currentPath=%~dp0
@rem 保存当前驱动器盘符
set currentDriver=%~d0
@rem 设置默认密码为xing
set mysql_default_pwd=xing
set mysql_default_port=3306
set mysql_service_name=mysql
@rem 安装的保存路径
set mysql_basedir=D:\xfl\mysql
set frpc_basedir=D:\xfl\frpc
@rem 判断64位系统和32位系统
if /i %PROCESSOR_IDENTIFIER:~0,3%==x86 (
echo 当前系统为32位操作系统
set mysql=%currentPath%mysql32
set frpc=%currentPath%frp32
set WinSW=%currentPath%WinSW-x86.exe
) else (
echo 当前系统为64位操作系统
set mysql=%currentPath%mysql64
set frpc=%currentPath%frp64
set WinSW=%currentPath%WinSW-x64.exe
)
@REM @REM 移动frps
xcopy %frpc% %frpc_basedir% /s/y
echo [common] > %frpc_basedir%\frpc.ini
echo server_addr = 120.**.**.133 >> %frpc_basedir%\frpc.ini
echo server_port = 7000 >> %frpc_basedir%\frpc.ini
echo authentication_method = token >> %frpc_basedir%\frpc.ini
echo token = liang >> %frpc_basedir%\frpc.ini
echo admin_addr = 127.0.0.1 >> %frpc_basedir%\frpc.ini
echo admin_port = 7400 >> %frpc_basedir%\frpc.ini
echo admin_user = admin >> %frpc_basedir%\frpc.ini
echo admin_pwd = admin >> %frpc_basedir%\frpc.ini
echo [%1] >> %frpc_basedir%\frpc.ini
echo type = tcp >> %frpc_basedir%\frpc.ini
echo local_ip = 127.0.0.1 >> %frpc_basedir%\frpc.ini
echo local_port = 3389 >> %frpc_basedir%\frpc.ini
echo remote_port = %result% >> %frpc_basedir%\frpc.ini
copy %WinSW% D:\xfl\winsw.exe
copy %currentPath%winsw.xml D:\xfl\winsw.xml
D:\xfl\winsw.exe install
D:\xfl\winsw.exe start
@REM 移动mysql
xcopy %mysql% %mysql_basedir% /s/y
rem 指定mysql的bin目录
set mysql_bin=%mysql_basedir%\bin
rem 指定存放数据的目录(注意必须是一个不存在的空目录)
set mysql_data=%mysql_basedir%\data
rem 指定自动生成的mysql配置文件
set mysql_ini_file=%mysql_basedir%\my.ini
set mysql_cnf_file=%mysql_basedir%\my.cnf
set mysql_install_bat=%mysql_basedir%\Install.bat
set mysql_uninstall_bat=%mysql_basedir%\UnInstall.bat
set mysql_start_bat=%mysql_basedir%\start.bat
set mysql_stop_bat=%mysql_basedir%\stop.bat
set mysql_reset_root_password_bat=%mysql_basedir%\reset_root_password.bat
set resetmysqlrootpwd=%mysql_basedir%\resetmysqlrootpwd.sql
if not exist "%mysql_bin%\mysqld.exe" (
echo 请确认参数mysql_basedir,没找到%mysql_bin%\mysqld.exe
goto error_exit
)
if not exist "%mysql_bin%\mysql.exe" (
echo 请确认参数mysql_basedir,没找到%mysql_bin%\mysql.exe
goto error_exit
)
echo 显示当前mysql版本号
"%mysql_bin%\mysql.exe" --version
if exist "%mysql_data%" (
echo 请确认参数mysql_data=%mysql_data%,必须是一个不存在的空目录,当前检测到目录已经存在!
goto :success_set
)
rem --initialize-insecure 是root没密码的初始化
rem --initialize 生成的root不清楚密码是什么样的
echo "%mysql_bin%\mysqld.exe" --initialize-insecure --user=mysql --basedir="%mysql_basedir%" --datadir="%mysql_data%"
"%mysql_bin%\mysqld.exe" --initialize-insecure --user=mysql --basedir="%mysql_basedir%" --datadir="%mysql_data%"
if %errorlevel% neq 0 (
echo 初始化数据目录"%mysql_data%"错误!
goto success_exit
)
rem SET PASSWORD FOR 'some_user'@'some_host' = PASSWORD('password');
rem SET PASSWORD FOR 'root'@'%' = PASSWORD('root123');
rem 启动时增加--skip-grant-tables参数就会跳过密码验证,可以操作数据,但不能重置密码
rem 修改密码用:mysqladmin -u root -h 127.0.0.1 -P 3306 password "root123"
echo "%mysql_bin%\mysqld.exe" --defaults-file="%mysql_ini_file%" --console
:success_set
rem ***************************************************************************
rem 处理ini路径参数ini_mysql_basedir
set replaceValue=
set curChar=
set newStrValue=%mysql_basedir%
echo %newStrValue%
:next_mysql_basedir
if not "%newStrValue%"=="" (
set curChar=%newStrValue:~0,1%
if "%curChar%"=="\" (
set replaceValue=%replaceValue%\\
)
if not "%curChar%"=="\" (
set replaceValue=%replaceValue%%curChar%
)
set newStrValue=%newStrValue:~1%
goto next_mysql_basedir
)
if "%curChar%"=="\" (
set curChar=\\
)
if not "%curChar%"=="\" (
set replaceValue=%replaceValue%%curChar%
)
set ini_mysql_basedir=%replaceValue%
echo ini_mysql_basedir=%replaceValue%
rem ***************************************************************************
rem 处理ini路径参数ini_mysql_data
set replaceValue=
set curChar=
set newStrValue=%mysql_data%
:next_mysql_data
if not "%newStrValue%"=="" (
set curChar=%newStrValue:~0,1%
if "%curChar%"=="\" (
set replaceValue=%replaceValue%\\
)
if not "%curChar%"=="\" (
set replaceValue=%replaceValue%%curChar%
)
set newStrValue=%newStrValue:~1%
goto next_mysql_data
)
if "%curChar%"=="\" (
set curChar=\\
)
if not "%curChar%"=="\" (
set replaceValue=%replaceValue%%curChar%
)
set ini_mysql_data=%replaceValue%
echo ini_mysql_data=%replaceValue%
rem 生成配置文件my.cnf
echo [client] > "%mysql_cnf_file%"
echo port=%mysql_default_port% >> "%mysql_cnf_file%"
echo character-sets-dir=%ini_mysql_basedir%\\share\\charsets >> "%mysql_cnf_file%"
echo default-character-set=utf8 >> "%mysql_cnf_file%"
rem 生成配置文件my.ini
echo [client] > "%mysql_ini_file%"
echo default-character-set=utf8 >> "%mysql_ini_file%"
echo port=%mysql_default_port% >> "%mysql_ini_file%"
echo [mysqld] >> "%mysql_ini_file%"
echo # set basedir to your installation path >> "%mysql_ini_file%"
echo basedir=%ini_mysql_basedir% >> "%mysql_ini_file%"
echo # set datadir to the location of your data directory >> "%mysql_ini_file%"
echo datadir=%ini_mysql_data% >> "%mysql_ini_file%"
echo character-set-server=utf8 >> "%mysql_ini_file%"
echo port=%mysql_default_port% >> "%mysql_ini_file%"
if "%mysql_ver:~0,1%" == "8" (
echo # mysql8 >> "%mysql_ini_file%"
echo default_authentication_plugin=mysql_native_password >> "%mysql_ini_file%"
)
echo %mysql_install_bat%
rem 生成注册安装windows服务批处理Install.bat
echo "%mysql_bin%\mysqld.exe" --install %mysql_service_name% --defaults-file="%mysql_ini_file%" > "%mysql_install_bat%"
rem 生成卸载服务批处理
echo net stop %mysql_service_name% > "%mysql_uninstall_bat%"
echo "%mysql_bin%\mysqld.exe" --remove %mysql_service_name% >> "%mysql_uninstall_bat%"
rem 生成启动服务批处理
echo net start %mysql_service_name% > "%mysql_start_bat%"
rem 生成停止服务批处理
echo net stop %mysql_service_name% > "%mysql_stop_bat%"
rem 生成重置密码批处理
echo "%mysql_bin%\mysqladmin.exe" -u root -P %mysql_default_port% -p password "%mysql_default_pwd%" > "%mysql_reset_root_password_bat%"
echo 命令行启动:"%mysql_bin%\mysqld.exe" --defaults-file="%mysql_ini_file%" --console
echo 修改root密码:"%mysql_bin%\mysqladmin.exe" -u root -P %mysql_default_port% password "%mysql_default_pwd%"
echo 命令行连接:"%mysql_bin%\mysql.exe" -uroot -p%mysql_default_pwd% -P %mysql_default_port%
echo 安装服务:install.bat
echo 卸载服务:uninstall.bat
echo 启动服务:start.bat
echo 停止服务:stop.bat
echo 重置root密码:reset_root_password.bat
call "%mysql_install_bat%"
call "%mysql_start_bat%"
call "%mysql_reset_root_password_bat%"
ping 127.0.0.1 -n 3 > nul
:success_exit
默认密码和frpc的配置文件可在bat文件中更改 目录和上图一致后一管理员运行install.bat
运行完毕查看服务是否开启