Skip to content

Windows版本

1.下载mysql

MySQL Community Server

mysql启动
  • 解压mysql:目录不要使用中文

  • 初始化,创建my.ini

bash
mysqld --initialize-insecure --user=mysql --console
  • 也可以在程序目录下手动创建my.ini
ini
[mysqld]
port=3306
character-set-server=utf8
default-storage-engine=INNODB
basedir="F:/data/mysql-8.0.35-winx64/"
datadir="F:/data/mysql-8.0.35-winx64/data"
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
log_bin_trust_function_creators=1
  • 启动:进入mysqlbin目录
bash
mysqld ––console
mysql使用
  • 初次访问:进入mysqlbin目录
  • 第一次访问无须密码
bat
mysql -u root
  • 修改密码
  • 方法一:使用navicat设置密码
  • 方法二:使用sql语句修改,密码为:finemap@cn
bat
ALTER USER `root`@`localhost` IDENTIFIED BY finemap@cn;
  • 访问
  • 设置密码后访问:进入mysql的bin目录
bat
mysql -u root -p
Enter password: # 输入密码:finemap@cn

2.mysql集成

2.1.配置

  1. 初始化程序只执行一遍即可,集成时提前设置
  2. 密码只设置一遍即可,集成时提前设置
  3. my.ini中存储了数据存储路径,如果程序修改位置,需要重新设置
  4. my.ini中存储端口信息,应该交由系统设置
  5. 配置及脚本:mysql.conf + ini.bat
mysql.conf:自定义配置文件
  • 配置文件,创建conf文件夹,添加mysql.conf配置文件
properties
#首次解压默认配置,该文件不可删除
#用户名,密码(修改不生效,请使用mysql命令自行修改)
user=root
password=finemap@cn
#端口(单独启动:可修改后重启生效)(server.bat启动会修改该端口)
port=3306
name=mysqld.exe
ini.bat:数据库配置脚本
  • 在根路径下创建:ini.bat,生成my.ini文件,用于修改数据存储路径
bat
@echo off

set MYSQL_DIR=%~dp0
set "MY_DIR=%MYSQL_DIR:\=/%"

if exist %MYSQL_DIR%my.ini (
	del %MYSQL_DIR%my.ini
)

set port=3306
if exist %MYSQL_DIR%conf\mysql.conf (
	for /f "tokens=1,2 delims==" %%i in (%MYSQL_DIR%conf\mysql.conf) do (
		set %%i=%%j
	)
)

echo [mysqld]>>%MYSQL_DIR%my.ini
echo port=%port%>>%MYSQL_DIR%my.ini
echo character-set-server=utf8>>%MYSQL_DIR%my.ini
echo default-storage-engine=INNODB>>%MYSQL_DIR%my.ini
echo basedir="%MY_DIR%">>%MYSQL_DIR%my.ini
echo datadir="%MY_DIR%data">>%MYSQL_DIR%my.ini
echo sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION>>%MYSQL_DIR%my.ini
echo log_bin_trust_function_creators=1 >>%MYSQL_DIR%my.ini

2.2.脚本文件

  1. bin文件夹,并创建脚本文件:startup.batshutdown.batrestart.batprogress.batstatus.bat
startup.bat:mysql启动程序
  • 未做端口监听
bat
@echo off
title "mysql 8.0.35"

setlocal

rem 设置全局环境
set "BIN_DIR=%~dp0"
cd %BIN_DIR%
cd ..
set "MYSQL_HOME=%cd%"
cd "%BIN_DIR%"

call %MYSQL_HOME%\ini.bat

echo mysql 8.0.35正在运行中...
mysqld ––console

endlocal
  • 监听mysql.conf中端口是否占用(推荐)
bat
@echo off
title "mysql 8.0.35"

setlocal enabledelayedexpansion

rem 设置全局环境
set "BIN_DIR=%~dp0"
cd %BIN_DIR%
cd ..
set "MYSQL_HOME=%cd%"
cd "%BIN_DIR%"

call %MYSQL_HOME%\ini.bat

rem 设置配置环境
for /f "tokens=1,2 delims==" %%i in (%MYSQL_HOME%\conf\mysql.conf) do (
	set %%i=%%j
)

set "process_name=%name%"
set "process_port=%port%"

REM 使用 netstat 命令查找端口对应的 PID

for /f "tokens=5" %%a in ('netstat -ano ^| findstr /R "\<0.0.0.0:%process_port%\>"') do (
    
    set "pid=%%a"

    REM 使用 tasklist 命令查找 PID 对应的程序名
    for /f "tokens=1,*" %%b in ('tasklist /fi "pid eq !pid!" ^| find /i "!pid!"') do (

        set "run_process_name=%%b"
        echo !run_process_name! | find /i "!process_name!" > nul
        if errorlevel 1 (
            echo %process_name%启动失败:%process_port% 端口被其他应用程序占用,程序为:!run_process_name!.
            REM 跳出内部循环
            goto :break
        ) else (
            echo %process_name%启动失败:程序运行中.
            REM 跳出内部循环
            goto :break
        )

    )
)

echo mysql 8.0.35正在运行中...
%process_name% --console 2>&1

:break

endlocal
shutdown.bat:mysql关闭程序
  • 未做进程监听
bat
@echo off
setlocal enabledelayedexpansion

set "process_name=mysqld.exe"

rem 使用 tasklist 命令查找包含 process_name 的进程
for /f "tokens=2*" %%a in ('tasklist /fi "imagename eq !process_name!" /nh') do (
    set "pid=%%a"
    echo Terminating process with PID !pid!...
    REM 使用 taskkill 终止进程
    taskkill /f /pid !pid!
)

endlocal
  • 监听mysql.conf中进程是否占用(推荐)
bat
@echo off
setlocal enabledelayedexpansion

rem 设置全局环境
set "BIN_DIR=%~dp0"
cd %BIN_DIR%
cd ..
set "MYSQL_HOME=%cd%"
cd "%BIN_DIR%"

for /f "tokens=1,2 delims==" %%i in (%MYSQL_HOME%\conf\mysql.conf) do (
	set %%i=%%j
)

set "process_name=%name%"

rem 使用 tasklist 命令查找包含 process_name 的进程
for /f "tokens=2*" %%a in ('tasklist /fi "imagename eq !process_name!" /nh') do (
    set "pid=%%a"
    REM 使用 taskkill 终止进程
    taskkill /f /pid !pid!
)

endlocal
progress.bat:mysql进程检查程序
  • mysql进程检查程序
bat
@echo off
title "mysql 8.0.35"

rem 设置全局环境
set "BIN_DIR=%~dp0"
cd %BIN_DIR%
cd ..
set "MYSQL_HOME=%cd%"
cd "%BIN_DIR%"

set status=0

rem 设置配置环境
for /f "tokens=1,2 delims==" %%i in (%MYSQL_HOME%\conf\mysql.conf) do (
	set %%i=%%j
)

set "process_name=%name%"
set "process_port=%port%"

for /f "tokens=5" %%a in ('netstat -ano ^| findstr /R "\<0.0.0.0:%process_port%\>"') do (
	for /f "tokens=1" %%b in ('tasklist /nh /fi "pid eq %%a"') do (
		if NOT "%%b"=="%process_name%" (
			rem 端口一样,程序名不一样:-1
            set status=-1
			goto :break
		) else (
			rem 端口一样,程序名一样:1
			set status=1
			goto :break
		)
	)
)

:break

echo %status%

endlocal
status.bat:mysql运行状态程序
  • 是否启动完成,用户名和密码来源于mysql.conf
bat
@echo off
title "mysql 8.0.35"

rem 设置全局环境
set "BIN_DIR=%~dp0"
cd %BIN_DIR%
cd ..
set "MYSQL_HOME=%cd%"
cd "%BIN_DIR%"

rem 设置配置环境
for /f "tokens=1,2 delims==" %%i in (%MYSQL_HOME%\conf\mysql.conf) do (
	set %%i=%%j
)

set "mysql_user=%user%"
set "mysql_password=%password%"

"%BIN_DIR%\mysql" -u%mysql_user% -p%mysql_password% -e "exit" >nul 2>&1
if %errorlevel% equ 0 (
    echo 1
) else (
    echo 0
)

3.1.添加声明文件

根节点创建manifest.json
json
{
    "name": "mysql",
    "nickname": "数据库",
    "version": "8.0.35",
    "filename": "mysql-8.0.35-winx64",
    "type": "lib",
    "source": "other",
    "system": "windows",
    "author": "北京凡图科技有限责任公司",
    "description": "Mysql数据库程序",
    "createTime": "2024-07-11 00:00:00",
    "isRunning": true,
    "logo": "/logo.png",
    "property": {
        "isSystem": true,
        "isStartup": false,
        "isShutdown": false,
        "isRestart": false
    },
    "progress": "bin\\progress.bat",
    "startup": "bin\\startup.bat",
    "shutdown": "bin\\shutdown.bat",
    "status": "bin\\status.bat",
    "data": {},
    "url": []
}

创建resources文件夹,添加logo.png图片

4.删除日志文件

4.1.二进制日志

查询二进制日志存储位置
sql
show variables like '%log_bin%';
  • 这些日志记录了所有对数据库的更改(如INSERT, UPDATE, DELETE语句),用于复制和恢复。

4.2.慢查询日志

查询慢查询日志存储位置
sql
show variables like 'slow_query_log%';
  • 这些日志记录了执行时间超过指定阈值的SQL查询

4.3.一般查询日志

查询一般查询日志存储位置
sql
show variables like 'general_log%';
  • 记录了服务器接收到的每一个查询或是命令

4.4.中继日志

查询中继日志存储位置
sql
show variables like 'relay_log%';
  • 仅存在于设置了主从复制的从服务器上,用于保存从主服务器接收到的更新。

4.5.错误日志

错误日志
  • 通常命名为hostname.err
  • 记录MySQL服务器启动、运行期间遇到的问题以及停止时的信息。

4.6.临时文件

临时文件
  • 通常命名为#innodb_temp文件夹
  • 在数据库操作完成后应该被自动删除

Linux版本