使用批处理静默安装MySQL绿色版数据库并执行用户创建和数据导入操作

        因系统现场部署人员反馈,系统各子系统数据库安装步骤繁琐,容易因安装问题引发系统使用异常。因此,想通过windows下批处理方式自动完成MySQL数据库初始化、用户权限密码设置,并在最终以静默方式导入SQL文件。

相关资源及版本说明

1.MySQL为官网下载 mysql-8.4.3-winx64.zip 自解压版本

2.SQL为导出 的若依项目ry数据库,包含表及数据

3.MySQL安装文件放置于D盘根目录

4.因为指令执行提示,异常将 MySQL 根目录下lib目录复制到了bin目录下

文件目录结构

MySQLbin目录结构

所用到的批处理文件如下:

@echo off
setlocal

rem 设置MySQL目录、端口和服务名称
set MYSQL_HOME=D:\mysql-8.4.3
set MYSQL_PORT=3307
set MYSQL_SERVICE_NAME=MySQL3307
set MYSQL_SERVICE_DESC=MySQL服务 端口%MYSQL_PORT%.
set SQL_FILE_PATH=%MYSQL_HOME%\scripts\init.sql

rem 生成my.ini文件
set MY_INI_FILE=%MYSQL_HOME%\my.ini
if not exist "%MY_INI_FILE%" (
    echo 正在创建my.ini文件...
    (
        echo [mysqld]
        echo port=%MYSQL_PORT%
        echo basedir=%MYSQL_HOME%\
        echo datadir=%MYSQL_HOME%\data
        echo character-set-server=utf8mb4
        echo default-storage-engine=INNODB
    ) > "%MY_INI_FILE%"
    echo my.ini文件创建完成。
) else (
    echo my.ini文件已存在,跳过创建。
)


rem 检查服务是否已经存在
echo 检查服务 %MYSQL_SERVICE_NAME% 是否存在...
sc query %MYSQL_SERVICE_NAME%
if %errorlevel% equ 0 (
    echo 服务 %MYSQL_SERVICE_NAME% 已存在,跳过初始化和后续操作。
    goto start
) else (
    echo 服务 %MYSQL_SERVICE_NAME% 不存在,继续初始化和设置。
)

rem 初始化MySQL数据库
echo 正在初始化数据库...
%MYSQL_HOME%\bin\mysqld --initialize-insecure --basedir=%MYSQL_HOME% --datadir=%MYSQL_HOME%\data
if %errorlevel% neq 0 (
    echo 数据库初始化失败,错误代码:%errorlevel%
    goto end
)

rem 注册MySQL服务
echo 注册MySQL服务...
%MYSQL_HOME%\bin\mysqld --install %MYSQL_SERVICE_NAME%
if %errorlevel% neq 0 (
    echo 服务注册失败,错误代码:%errorlevel%
    goto end
)

:start 
rem 启动MySQL服务
echo 正在启动MySQL服务...
net start %MYSQL_SERVICE_NAME%
if %errorlevel% neq 0 (
    echo 服务启动失败,错误代码:%errorlevel%
    goto end
)

rem 等待MySQL服务启动
timeout /t 5

rem 检查并更新用户
echo 检查用户是否已存在...
%MYSQL_HOME%\bin\mysql -u root -P %MYSQL_PORT% --skip-password -e "SELECT user, host FROM mysql.user WHERE user='root' AND host='localhost';"
if %errorlevel% equ 0 (
    echo 用户 'root'@'localhost' 已存在,更新密码...
    %MYSQL_HOME%\bin\mysql -u root -P %MYSQL_PORT% --skip-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';"
) else (
    echo 创建数据库用户和权限...
    %MYSQL_HOME%\bin\mysql -u root -P %MYSQL_PORT% --skip-password -e "CREATE USER 'root'@'localhost' IDENTIFIED BY '123456';"
    %MYSQL_HOME%\bin\mysql -u root -P %MYSQL_PORT% --skip-password -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;"
    %MYSQL_HOME%\bin\mysql -u root -P %MYSQL_PORT% --skip-password -e "FLUSH PRIVILEGES;"
)

rem 执行SQL脚本
if exist "%SQL_FILE_PATH%" (
    echo 执行SQL脚本...
    %MYSQL_HOME%\bin\mysql -u root -p123456 -P %MYSQL_PORT% < "%SQL_FILE_PATH%"
	echo SQL脚本执行完成
) else (
    echo SQL文件 %SQL_FILE_PATH% 不存在,跳过执行。
)

echo MySQL安装及初始化完成!

:end
endlocal
pause

批处理运行须以管理员权限运行,否则部分指令因权限问题会执行失败

安装执行过程

安装后如果想卸载可以使用相关命令进行卸载

D:\mysql-8.4.3\bin>mysqld -remove mysql3307
Service successfully removed.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值