Files
SignatureSystem/start_mysql.bat

86 lines
3.1 KiB
Batchfile
Raw Normal View History

2026-07-20 13:16:17 +08:00
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul 2>&1
title MySQL - 自动签名系统
cd /d "%~dp0"
set MYSQL_HOME=%~dp0mysql
set MYSQL_DATA=%MYSQL_HOME%\data
echo ========================================
echo MySQL 服务 - 启动中...
echo 端口: 33366 账户: admin/admin 库: word_sign
echo ========================================
echo.
if not exist "%MYSQL_HOME%\bin\mysqld.exe" (
echo [错误] 未检测到内置 MySQL: %MYSQL_HOME%\bin\mysqld.exe
echo 系统将以 SQLite 模式运行, 无需本脚本
pause
exit /b 1
)
if not exist "%MYSQL_DATA%" (
echo [MySQL] 首次运行, 正在初始化数据目录...
"%MYSQL_HOME%\bin\mysqld.exe" --initialize-insecure --basedir="%MYSQL_HOME%" --datadir="%MYSQL_DATA%" 2>&1
echo [MySQL] 数据目录初始化完成
)
netstat -aon | findstr ":33366 " | findstr "LISTENING" >nul 2>&1
if !errorlevel! equ 0 (
echo [MySQL] 端口 33366 已在监听, MySQL 已运行, 无需重复启动
pause
exit /b 0
)
echo [MySQL] 正在启动 mysqld (后台)...
start "" /b "%MYSQL_HOME%\bin\mysqld.exe" --defaults-file="%MYSQL_HOME%\my.ini" --console
echo [MySQL] 等待端口 33366 就绪...
set MYSQL_READY=0
for /L %%i in (1,1,30) do (
if !MYSQL_READY! equ 0 (
timeout /t 1 /nobreak >nul 2>&1
netstat -aon | findstr ":33366 " | findstr "LISTENING" >nul 2>&1
if !errorlevel! equ 0 (
set MYSQL_READY=1
echo [MySQL] mysqld 已就绪 ^(端口 33366^)
)
)
)
if !MYSQL_READY! equ 0 (
echo [MySQL] 等待超时, mysqld 可能未成功启动, 请检查 mysql\data\*.err
pause
exit /b 1
)
echo [MySQL] 确保用户和数据库存在...
set USER_READY=0
for /L %%i in (1,1,10) do (
if !USER_READY! equ 0 (
"%MYSQL_HOME%\bin\mysql.exe" -u root --skip-password --port=33366 -e "CREATE DATABASE IF NOT EXISTS word_sign CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER IF NOT EXISTS 'admin'@'127.0.0.1' IDENTIFIED BY 'admin'; CREATE USER IF NOT EXISTS 'admin'@'localhost' IDENTIFIED BY 'admin'; CREATE USER IF NOT EXISTS 'admin'@'%%' IDENTIFIED BY 'admin'; GRANT ALL PRIVILEGES ON word_sign.* TO 'admin'@'127.0.0.1'; GRANT ALL PRIVILEGES ON word_sign.* TO 'admin'@'localhost'; GRANT ALL PRIVILEGES ON word_sign.* TO 'admin'@'%%'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%%' WITH GRANT OPTION; FLUSH PRIVILEGES;" >nul 2>&1
if !errorlevel! equ 0 (
set USER_READY=1
echo [MySQL] 用户和数据库配置完成
) else (
timeout /t 1 /nobreak >nul 2>&1
)
)
)
if !USER_READY! equ 0 (
echo [MySQL] 用户和数据库配置失败
pause
exit /b 1
)
echo.
echo ========================================
echo MySQL 启动成功 (后台运行)
echo 此窗口可以关闭, mysqld 会继续运行
echo 停止 MySQL: 运行 stop.bat 或 stop_mysql.bat
echo ========================================
echo.
pause
exit /b 0