绿色包保存

This commit is contained in:
2025-11-27 20:50:59 +08:00
parent a7487c24bf
commit 2322858bc4
20 changed files with 2441 additions and 249 deletions

View File

@@ -1,85 +1,33 @@
==========================================
NPQS9100 MySQL 免安装版使用说明
NPQS9100 MySQL 数据库
==========================================
一、快速开始
目录说明
----------------------------------------
1. 启动 MySQL:
双击运行: startup.bat
(注意不要关闭窗口关闭会停止MySQL)
2. 首次使用,如需重置密码和权限:
双击运行: reset-root-password.bat
3. 停止 MySQL:
双击运行: stop.bat
bin/ - MySQL 可执行文件
data/ - 数据库数据目录
share/ - 共享资源文件
my.ini - MySQL 配置文件
二、连接信息
服务管理
----------------------------------------
主机: 127.0.0.1 (或 localhost)
MySQL 服务由主应用自动管理:
- 应用启动时自动启动
- 应用关闭时自动停止
- 默认端口3306如被占用会自动切换
连接信息
----------------------------------------
主机: 127.0.0.1
端口: 3306
用户: root
密码: njcnpqs
字符集: utf8mb4
三、脚本说明
----------------------------------------
startup.bat - 启动 MySQL 服务
stop.bat - 正常停止 MySQL 服务
reset-root-password.bat - 重置root密码和权限解决1130错误
kill-running-port.bat - 智能清理应用实际使用的端口自动识别3306/3307/...
my.ini - MySQL 配置文件
.running-port - 运行时端口记录(自动生成,勿删除)
bin/ - MySQL 可执行文件
data/ - 数据库数据目录
share/ - 共享资源
⚠️ 安全说明:
- 应用自动停止MySQL时只会停止应用自己启动的MySQL进程
- 不会影响您电脑上安装的其他MySQL服务
- kill-running-port.bat 会读取 .running-port 文件,精确清理实际使用的端口
- 如果3306被占用应用会自动使用3307kill-running-port.bat 会智能识别
⚙️ 停止机制:
- 应用关闭时会自动使用 mysqladmin shutdown 优雅停止MySQL
- 如果优雅停止失败,会自动尝试强制停止
- 整个停止过程最多12秒确保MySQL完全关闭
⭐ 端口智能管理:
- 应用启动时自动检测可用端口3306 → 3307 → 3308...
- 启动成功后会记录实际端口到 .running-port 文件
- 使用 kill-running-port.bat 可自动清理正确的端口
四、注意事项
----------------------------------------
1. 启动后不要关闭命令行窗口,关闭窗口会停止 MySQL
2. 正常停止请使用 stop.bat
3. 如果出现 1130 或密码错误,运行 reset-root-password.bat
4. 如果端口被占用无法启动,运行 kill-3306.bat
5. 默认密码是 njcnpqs不要随意修改
五、常见问题
----------------------------------------
Q: 连接提示 1130 错误或密码错误?
A: 运行 reset-root-password.bat 重置权限
Q: 启动失败或端口被占用?
A: 运行 kill-running-port.bat 清理端口(自动识别正确端口)
Q: 如何重置密码?
A: 运行 reset-root-password.bat密码会重置为 njcnpqs
Q: 数据在哪里?
A: 所有数据库数据在 data/ 目录下
==========================================
南京灿能电气自动化有限公司
2025
==========================================

View File

@@ -0,0 +1,34 @@
@echo off
chcp 65001 >nul
cd /d %~dp0
taskkill /F /IM mysqld.exe 2>nul
timeout /t 2 /nobreak >nul
rmdir /s /q data 2>nul
mkdir data
echo 初始化数据库...
bin\mysqld.exe --defaults-file=my.ini --initialize-insecure --console
echo 启动 MySQL...
start /B bin\mysqld.exe --defaults-file=my.ini
timeout /t 8 /nobreak >nul
echo 设置密码...
bin\mysql.exe -h 127.0.0.1 -P 3306 -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'njcnpqs'; CREATE USER IF NOT EXISTS 'root'@'127.0.0.1' IDENTIFIED BY 'njcnpqs'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION; FLUSH PRIVILEGES;"
if %errorlevel% NEQ 0 (
echo 第一次失败,重试...
timeout /t 3 /nobreak >nul
bin\mysql.exe -h localhost -P 3306 -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'njcnpqs'; CREATE USER IF NOT EXISTS 'root'@'127.0.0.1' IDENTIFIED BY 'njcnpqs'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION; FLUSH PRIVILEGES;"
)
taskkill /F /IM mysqld.exe 2>nul
echo.
echo ==========================================
echo 完成!密码: njcnpqs
echo ==========================================
pause

View File

@@ -1,115 +0,0 @@
@echo off
chcp 65001 >nul
color 0C
title 清理NPQS9100 MySQL端口占用
cls
echo ==========================================
echo 清理 NPQS9100 MySQL 端口占用
echo ==========================================
echo.
REM 获取MySQL目录脚本所在目录
set MYSQL_HOME=%~dp0
cd /d "%MYSQL_HOME%"
REM 读取实际运行的端口
set PORT_FILE=.running-port
set MYSQL_PORT=
if exist "%PORT_FILE%" (
set /p MYSQL_PORT=<"%PORT_FILE%"
echo [√] 检测到运行记录:端口 %MYSQL_PORT%
echo.
) else (
echo [!] 未找到运行记录文件,使用默认端口 3306
echo.
set MYSQL_PORT=3306
)
echo [1] 检查端口 %MYSQL_PORT% 占用情况...
echo.
REM 查找占用该端口的连接
netstat -ano | findstr ":%MYSQL_PORT%" > "%TEMP%\mysql_port.txt"
if %errorlevel% equ 0 (
echo 发现以下端口 %MYSQL_PORT% 连接:
echo ----------------------------------------
type "%TEMP%\mysql_port.txt"
echo ----------------------------------------
echo.
echo [2] 提取进程ID并结束进程...
echo.
REM 提取所有LISTENING状态的PID
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT%" ^| findstr "LISTENING"') do (
if not "%%a"=="0" (
echo 正在结束进程 PID: %%a
taskkill /F /PID %%a 2>nul
if errorlevel 1 (
echo [失败] 无法结束进程 %%a
) else (
echo [成功] 已结束进程 %%a
)
)
)
REM 如果还有其他状态的连接,也尝试结束
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT%" ^| findstr /V "LISTENING"') do (
if not "%%a"=="0" (
echo 正在结束进程 PID: %%a
taskkill /F /PID %%a 2>nul
if errorlevel 1 (
echo [已结束或无权限] 进程 %%a
) else (
echo [成功] 已结束进程 %%a
)
)
)
echo.
echo [3] 清理完成
REM 等待2秒让进程完全释放
timeout /t 2 /nobreak >nul
echo.
echo [4] 再次检查端口 %MYSQL_PORT%...
netstat -ano | findstr ":%MYSQL_PORT%"
if errorlevel 1 (
echo [√] 端口 %MYSQL_PORT% 已完全释放
REM 删除端口记录文件
if exist "%PORT_FILE%" (
del "%PORT_FILE%"
echo [√] 已清理端口记录文件
)
) else (
echo [!] 仍有连接存在可能是TIME_WAIT状态会自动释放
)
) else (
echo [√] 没有发现占用端口 %MYSQL_PORT% 的进程
REM 删除端口记录文件
if exist "%PORT_FILE%" (
del "%PORT_FILE%"
echo [√] 已清理端口记录文件
)
)
REM 清理临时文件
if exist "%TEMP%\mysql_port.txt" del "%TEMP%\mysql_port.txt"
echo.
echo ==========================================
echo 清理完成
echo ==========================================
echo.
echo 说明:
echo - 此脚本只清理 NPQS9100 应用使用的 MySQL 端口
echo - 不会影响您电脑上的其他 MySQL 服务
echo.
pause

View File

@@ -1,66 +0,0 @@
@echo off
chcp 65001 >nul
color 0B
title Reset MySQL Root Password
cls
echo ==========================================
echo Reset MySQL Root Password
echo ==========================================
echo.
echo This script will reset root password and grant 127.0.0.1 access
echo.
echo IMPORTANT: Close any running MySQL windows first!
echo.
pause
set MYSQL_HOME=%cd%
set password=njcnpqs
echo.
echo [1] Stopping MySQL...
taskkill /F /IM mysqld.exe >nul 2>&1
timeout /t 2 >nul
echo Done.
echo.
echo [2] Creating init file...
(
echo ALTER USER IF EXISTS 'root'@'localhost' IDENTIFIED BY '%password%';
echo CREATE USER IF NOT EXISTS 'root'@'127.0.0.1' IDENTIFIED BY '%password%';
echo GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
echo CREATE USER IF NOT EXISTS 'root'@'%%' IDENTIFIED BY '%password%';
echo GRANT ALL PRIVILEGES ON *.* TO 'root'@'%%' WITH GRANT OPTION;
echo FLUSH PRIVILEGES;
) > "%MYSQL_HOME%\reset-init.sql"
echo Done.
echo.
echo [3] Starting MySQL with init-file...
echo This will take about 30 seconds...
echo.
cd /d "%MYSQL_HOME%"
"%MYSQL_HOME%\bin\mysqld.exe" --defaults-file="%MYSQL_HOME%\my.ini" --init-file="%MYSQL_HOME%\reset-init.sql" --console
REM The above command runs in foreground and will exit when you press Ctrl+C
echo.
echo MySQL has stopped.
echo.
if exist "%MYSQL_HOME%\reset-init.sql" del "%MYSQL_HOME%\reset-init.sql"
echo.
echo ==========================================
echo Password reset completed!
echo ==========================================
echo.
echo Connection info:
echo Host: 127.0.0.1
echo Port: 3306
echo User: root
echo Password: %password%
echo.
echo Now you can run startup.bat to start MySQL normally
echo.
pause